Php 在拉拉维尔组织儿童收藏
比如说,我有一些运动员,他们属于属于属于活动的相册的照片 获取运动员照片的最快方法是Php 在拉拉维尔组织儿童收藏,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,比如说,我有一些运动员,他们属于属于属于活动的相册的照片 获取运动员照片的最快方法是$atternate->photos 如果我朝这个方向走: $events= Event::whereHas('albums.photos.athletes', function ($q) { $q->where('athlete_id', $this->athlete->id); }) 它可以工作,但速度较慢,我不能做$events->albums这样的事情,只能返回包含这位运动员照
$atternate->photos代码>
如果我朝这个方向走:
$events= Event::whereHas('albums.photos.athletes', function ($q)
{
$q->where('athlete_id', $this->athlete->id);
})
它可以工作,但速度较慢,我不能做$events->albums这样的事情,只能返回包含这位运动员照片的相册
在我的页面上,我想按事件显示照片。如何使用$atternate->photos
,然后按事件组织它们
我可以循环浏览从$atternate->photos
中找到的所有照片,并用event->album->photo的层次结构构建一个新的数组,但这看起来真的很简陋。有没有更好的方法用雄辩的语言来做到这一点
编辑:
这将准确返回我需要的数据,而无需进一步查询,但几乎需要20秒才能完成
// Get all athlete media
$competitions = Competition::whereHas('publishedAlbums.publishedMedia.athletes', function ($q)
{
$q->where('athlete_id', $this->athlete->id);
})
->with(array('publishedAlbums.publishedMedia' => function($query)
{
$query->whereHas('athletes', function ($q)
{
$q->where('athlete_id', $this->athlete->id);
});
}))
->with(array('publishedAlbums' => function($query)
{
$query->whereHas('publishedMedia.athletes', function ($q)
{
$q->where('athlete_id', $this->athlete->id);
});
}))
->get();
有了它,我可以做一些事情,比如$competitions->publishedAlbums,它只显示有这位运动员媒体的专辑。但是它需要很长的时间来执行。这似乎可以大大简化
这能满足你的需要吗?速度更快吗
$competitions = Competition::with('publishedAlbums.publishedMedia.athletes')
->whereHas('publishedAlbums.publishedMedia.athletes', function($q)
{
$q->where('athlete_id', $this->athlete->id);
})->get();
这是可行的,但后来做$competitions->publishedAlbums包含了所有的相册,而不仅仅是包含所需运动员的媒体的相册。