我有一个Album
型号。 Album
可以包含多个Event
和多个Picture
,但Event
属于一个Album
,一个Picture
属于一个Album
$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;
}
}
也是。
我试图列出一系列事件。在每次活动中,我都想展示这张专辑的专辑和3张随机图片。
我想我必须使用Eager Loading这样做,但我有点困惑。目前我可以拥有一张专辑列表,并从中随机拍摄3张照片:
{{1}}
这是有效的,但我必须从事件而不是专辑开始。我不知道如何让所有这些关系协同工作。活动 - >专辑 - >图片并将其显示在视图中。
答案 0 :(得分:0)
然后你需要一个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