0
Eloquentのwith()を使用すると、熱心にロードされたデータは時々になります。null
になります。私の場合は、Users
、Blogposts
、Categories
の3つのテーブルがあります。 blogpostsテーブルには、author
とcategory
という2つの外部キーがあります。実行されるクエリは、Eloquent ORMはwith()eager loadを使用してnullを返します
return Blogpost::with(['author', 'category'])->get();
で与えられます。応答は、まあまあです。 author
はnull
からid: 3
、category
からid: 4
になることに注意してください。実際には
両方のID 1
IDS 2
、4
(スティーブ)がそうであるように、3
は同じ著者(スーパーユーザ)を持っています。 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: "[email protected]",
fullname: "foo foo",
is_admin: false,
},
image_name: "banner1.png",
category: {
id: 2,
name: "science",
},
intro: "Hello World!",
},
{
id: 1,
author: {
id: 1,
email: "[email protected]",
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');
}
を定義した関係があり、これに任意の説明がありますか?
authorテーブルのauthor idが見つかりません。 –