Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在拉拉维尔组织儿童收藏_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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包含了所有的相册,而不仅仅是包含所需运动员的媒体的相册。