我正在研究Laracasts关于egar loading的视频,到目前为止一直很好!
我认为我很好地掌握了这些概念,但现在我已经习惯了以前的做法(CodeIgniter)与这种非常棒的方式。
我有3张桌子:
cards #card_id, title, created_at, updated_at
notes #note_id, name, created_at, updated_at
card_notes #card_id, note_id
在card_notes
内有FK字段:
card_id #FK back to cards->card_id
note_id #FK back to notes->note_id
我能够获得给定卡片的所有笔记:
CardsController.php
public function show(Card $card)
{
$card->load('notes');
}
Card.php
public function notes()
{
return $this->hasMany(CardNote::class);
}
JSON
{
id: 1,
title: "First Card",
created_at: null,
updated_at: null,
notes: [
{
card_id: 1,
note_id: 1,
created_at: null,
updated_at: null
},
{
card_id: 1,
note_id: 2,
created_at: null,
updated_at: null
}
]
}
到目前为止,真好!
现在,在我的notes
表格中,我想要显示一个name
列。这是我被困的地方。我能够进入我的查找表,但我还没弄明白如何将过去该表并进入连接表。看起来我需要hasManyThrough
,但是......我的脸在我的脸上。
return $this->hasManyThrough(Note::class, CardNote::class);
我需要获取给定note_id
的所有记录记录,但我不确定如何深入到下一级别。这就是我最终想要产生的东西:
JSON
{
id: 1,
title: "First Card",
created_at: null,
updated_at: null,
notes: [
{
card_id: 1,
note_id: 1,
name: "John Doe"
created_at: null,
updated_at: null
},
{
card_id: 1,
note_id: 2,
name: "Jane Doe"
created_at: null,
updated_at: null
}
]
}
感谢您的任何建议!
答案 0 :(得分:0)
如果你继续滚动,它会有所帮助。我知道我和hasManyThrough
很接近,我只是错过了可选参数。
return $this->hasManyThrough(Note::class, CardNote::class, 'card_id', 'note_id');