Php 雄辩的ORM使用with()eager load返回null

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)具有相同的作者

当使用elount的with()时,急切加载的数据有时会变成
null
。在我的例子中,我有三个表,
Users
Blogposts
Categories
。blogposts表有两个外键,分别称为
author
category
。执行的查询由

return Blogpost::with(['author', 'category'])->get();
答案很奇怪。请注意,
author
id:3
category
id:4
变为
null

实际上,两个ID
1
3
与ids
2
4
(steve)具有相同的作者(超级用户)。id
1
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。