当使用Eloquent与()时,急切加载的数据有时变为null
。就我而言,我有三个表,Users
,Blogposts
和Categories
。 blogposts表有两个外键,称为author
和category
。执行的查询由
return Blogpost::with(['author', 'category'])->get();
反应很奇怪。请注意author
来自null
的{{1}}和来自id: 3
的{{1}}。
实际上,ids category
,id: 4
与ids 1
,3
(史蒂夫)具有相同的作者(超级用户)。另外,对象2
,4
具有相同的类别(网络开发)。
似乎某个/类别/作者已经被重新审视并且被限制在博客帖子中,过去的类别/作者变为空。
1
最后,这里是模型中定义的关系
4
对此有任何解释吗?
答案 0 :(得分:2)
似乎故障出现在模型定义中,这里是修正后的模型。
// User model
public function blogposts() {
return $this->hasMany('App\Blogpost', 'id', 'author');
}
// Blogpost model
public function author() {
return $this->belongsTo('App\User', 'author', 'id');
}
public function category() {
return $this->belongsTo('App\Category', 'category', 'id');
}
// Category model
public function blogposts() {
return $this->hasMany('App\Blogpost', 'id', 'category');
}