Laravel:渴望加载3"关系"

时间:2014-10-03 00:07:11

标签: php laravel eloquent eager-loading

我有一个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}}

这是有效的,但我必须从事件而不是专辑开始。我不知道如何让所有这些关系协同工作。活动 - >专辑 - >图片并将其显示在视图中。

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