【问题标题】:Laravel eloquent join in ajaxLaravel 雄辩加入 ajax
【发布时间】:2018-10-11 03:30:46
【问题描述】:

嗨。我怎样才能让 laravel 雄辩加入 ajax 成功功能?

这是用户模型

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'first_name', 'last_name', 'email', 'country', 'type', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    function products(){
        return $this->hasMany("App\ProductModel" , "user_id");
    }
}

这是我的产品模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $fillable = [
        'user_id','category','title','description','photo','price'
    ];
    public $timestamps = true;

    function author(){
        return $this->hasOne("App\User", "id", "user_id");
    }
}

这是控制器功能

public function getProduct(){
        $product= ProductModel::all();
        return response()->json($product);
    }

这是我的 ajax 函数

$.get("{{route('get.product')}}", function(data){
     console.log(data)  // console array on obj
     $(data).each(function(index,element){
        console.log(element.author)     // console undefined
     })
});

在 laravel 刀片上它的工作格但在 ajax 上不起作用

【问题讨论】:

  • 当你 console.log(data) 的数据是什么样子的?
  • 对象中有数组。但是在数组中没有作者。这个问题已经在下面的答案的帮助下得到了解决。

标签: php ajax laravel eloquent


【解决方案1】:

你必须加载author关系:

$product = ProductModel::with('author')->get();

【讨论】:

    【解决方案2】:

    这是因为响应的数据不包含关系author。在将数据发送到客户端(浏览器)之前,您必须先在服务器上加载关系。

    这就是Eager Loading 发挥作用的地方:

    $product = ProductModel::with('author')->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2022-07-25
      • 2021-05-07
      相关资源
      最近更新 更多