我在Laravel 5 Eloquent中意识到有一个叫做groupBy的函数。我通常像这样使用它
->groupBy('rating');
让我们在评级栏中说,整数有3种类型的评分:1,2 and 3
如何将每种评级限制为10条记录?最好使用Eloquent但如果不可能,我仍然会接受查询构建器方法。
答案 0 :(得分:3)
Union应该有效:
$type1 = Model::whereType(1)->take(10);
$type2 = Model::whereType(2)->take(10);
$type3 = Model::whereType(3)->take(10);
$types = $type1->union($type2)->union($type3)->get();
答案 1 :(得分:0)
如果我没有错误地提出你的问题,你的问题mysql解决方案将是Get top n records for each group of grouped results
但是当我们将我们的欲望查询转换为laravel时,它的外观会相似:
$Rating1 = Model::whereRating(1)->take(10);
$Rating2 = Model::whereRating(2)->take(10);
$Rating3 = Model::whereRating(3)->take(10);
$result = Model::unionAll($Rating1)->unionAll($Rating2)->unionAll($Rating3)->get();
根据laravel 4.2文档,它也是一个不多的查询,如果你仍然混淆实现它,请告诉我。