从关系中获取顶行

时间:2016-07-03 09:11:27

标签: laravel laravel-5 eloquent laravel-5.2

我有2个型号:VideoCountry并且想要按照视图数量排序检索每个国家/地区的前5个视频,并希望使用视频模型而不是国家/地区型号来执行此操作我将从

开始
$videos = Video::with('user')->orderBy('views', 'desc')->get();

因此,代码应返回前5个国家/地区的视频

如果以County::with('videos')开头的解决方案,我们将不胜感激 给定

2 个答案:

答案 0 :(得分:1)

这应该会有所帮助,它返回视频而不会重复任何循环。

 $countries = Country::with(['videos' => function($query) {
     $query->orderBy('views', 'desc')->take(5);
 }])->get();

您必须需要此循环才能获取视频

$topVideos = [];
foreach ($countries as $country) {
   $topVideos[] = $country->videos;
}

答案 1 :(得分:0)

$countries = Country::with(['videos' => function($query){
        $query->orderBy('views', 'desc');
    }])
    ->get();

foreach ($countries as $country) {
    $top_5_videos = $country->videos->take(5);
}