Php 雄辩的ORM使用with()eager load返回null
当使用elount的with()时,急切加载的数据有时会变成Php 雄辩的ORM使用with()eager load返回null,php,laravel-5,eloquent,laravel-5.2,Php,Laravel 5,Eloquent,Laravel 5.2,当使用elount的with()时,急切加载的数据有时会变成null。在我的例子中,我有三个表,Users,Blogposts和Categories。blogposts表有两个外键,分别称为author和category。执行的查询由 return Blogpost::with(['author', 'category'])->get(); 答案很奇怪。请注意,author从id:3和category从id:4变为null 实际上,两个ID1,3与ids2,4(steve)具有相同的作者
null
。在我的例子中,我有三个表,Users
,Blogposts
和Categories
。blogposts表有两个外键,分别称为author
和category
。执行的查询由
return Blogpost::with(['author', 'category'])->get();
答案很奇怪。请注意,author
从id:3
和category
从id:4
变为null
实际上,两个ID1
,3
与ids2
,4
(steve)具有相同的作者(超级用户)。id1
,4
也具有相同的类别(web开发)
似乎某个/某个类别/作者已经被检索并绑定到某个博客帖子,而过去的类别/作者则变为空
[
{
id: 4,
author: null,
image_name: "banner1.png",
category: null,
intro: "Hello World!",
},
{
id: 3,
author: null,
image_name: "banner1.png",
category: {
id: 3,
name: "big data",
},
intro: "Hello World!",
},
{
id: 2,
author: {
id: 2,
email: "foo@foo.foo",
fullname: "foo foo",
is_admin: false,
},
image_name: "banner1.png",
category: {
id: 2,
name: "science",
},
intro: "Hello World!",
},
{
id: 1,
author: {
id: 1,
email: "superuser@superuser.com",
fullname: "superuser superuser",
is_admin: true,
},
image_name: "banner1.png",
category: {
id: 1,
name: "web dev",
},
intro: "Hello World!",
}
]
最后,这里是模型中定义的关系
// User model
public function blogposts() {
return $this->hasMany('App\Blogpost', 'id');
}
// Blogpost model
public function author() {
return $this->belongsTo('App\User', 'id');
}
public function category() {
return $this->belongsTo('App\Category', 'id');
}
// Category model
public function blogposts() {
return $this->hasMany('App\Blogpost', 'id');
}
对此有什么解释吗?似乎故障出现在模型定义中,以下是已更正的模型
// 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');
}
故障似乎出现在模型定义中,以下是已更正的模型
// 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');
}
如果在作者表中找不到作者id。如果在作者表中找不到作者id。