[英]Laravel: Eager loading with 3 “relations”
我有一個Album
模特。 一個Album
可以有多個Event
和許多Picture
但是一個Event
屬於一個Album
而一個Picture
屬於一個Album
。
我正在嘗試列出事件清單。 在每種情況下,我都想顯示專輯的標題和該專輯的3張隨機圖片。
我認為我必須使用“急切加載”來執行此操作,但我有些困惑。 目前,我可以列出一張專輯,並從中隨機抽取3張照片,如下所示:
$albums = Album::with(array('pictures' => function($query) {
$query->orderByRaw("RAND()")->take(2);
}))->get();
foreach ($albums as $album) {
echo $album->title;
foreach ($album->pictures as $picture) {
echo $picture->filename;
}
}
這是可行的,但我必須從事件而不是專輯開始。 我不知道如何使所有這些關系一起工作。 事件->相冊->圖片,並將其顯示在視圖中。
然后,您需要one-to-many
關系,並且需要為雙方創建關系方法,例如:
在Event
模型中:
public function album()
{
return $this->belongsTo('Album', 'album_id');
}
在Album
模型中:
public function events()
{
return $this->hasMany('Event', 'album_id');
}
public function pictures()
{
return $this->hasMany('Picture', 'album_id');
}
因此,現在您可以從Event
開始,例如:
$events = Event::with('album.pictures')->get(); // or paginate(10), 10 per page
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.