Eloquent ORM使用with()eager load返回null

时间:2016-08-28 13:53:49

标签: php laravel-5 eloquent laravel-5.2

当使用Eloquent与()时,急切加载的数据有时变为null。就我而言,我有三个表,UsersBlogpostsCategories。 blogposts表有两个外键,称为authorcategory。执行的查询由

给出
return Blogpost::with(['author', 'category'])->get();

反应很奇怪。请注意author来自null的{​​{1}}和来自id: 3的{​​{1}}。

实际上,ids categoryid: 4与ids 13(史蒂夫)具有相同的作者(超级用户)。另外,对象24具有相同的类别(网络开发)。

似乎某个/类别/作者已经被重新审视并且被限制在博客帖子中,过去的类别/作者变为空。

1

最后,这里是模型中定义的关系

4

对此有任何解释吗?

1 个答案:

答案 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');
}