Laravel 雄辩加入 ajax
Posted
技术标签:
【中文标题】Laravel 雄辩加入 ajax【英文标题】:Laravel eloquent join in 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) 的数据是什么样子的? 对象中有数组。但是在数组中没有作者。这个问题已经在下面的答案的帮助下得到了解决。 【参考方案1】:你必须加载author
关系:
$product = ProductModel::with('author')->get();
【讨论】:
【参考方案2】:这是因为响应的数据不包含关系author
。在将数据发送到客户端(浏览器)之前,您必须先在服务器上加载关系。
这就是Eager Loading 发挥作用的地方:
$product = ProductModel::with('author')->get();
【讨论】:
以上是关于Laravel 雄辩加入 ajax的主要内容,如果未能解决你的问题,请参考以下文章
Laravel orderby 加入 2 个没有雄辩关系的表
在laravel [实现过滤器]中将多个表与雄辩和急切的加载一起加入