我有一個Album
模型。 Album
可以有許多Event
和許多Picture
,但Event
屬於一個Album
和一個Picture
也屬於一個Album
。Laravel:渴望加載3「關係」
我在嘗試製作事件列表。在每個活動中,我想顯示相冊的標題和3張隨機圖片。
我想我必須使用Eager Loading來做,但我有點困惑。目前,我可以有專輯列表,並採取從他們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;
}
}
這是工作,但我必須從事件,而不是專輯開始。我不知道如何讓所有這些關係一起工作。事件 - >相冊 - >圖片並將其顯示到視圖中。
您是否嘗試過類似$事件::用([ '相冊'=>函數($ Q) {$ Q->與( '圖片') - > orderByRaw( 'RAND()') - >取(2); }]); – cubiclewar 2014-10-03 00:52:46
您不能在預先加載的查詢中使用'take'來爲每個相冊加載2張圖片,它會將所有圖片限制爲2.請閱讀以下內容:http://softonsofa.com/tweaking-eloquent-relations-how-to-get -n-related-models-per-parent/ – 2014-10-03 07:21:13
@cubiclewar不幸的是我得到了'調用未定義方法Illuminate \ Events \ Dispatcher :: with()' @JarekTkaczyk哇,這似乎很痛苦!所有這些代碼只是爲了查詢一些關係?你確定沒有簡單的方法來做到這一點? – Flobesst 2014-10-03 15:05:29