簡體   English   中英

Laravel:渴望加載3個“關系”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM