Laravel 5:如何检索列中每种数据的10条记录?

时间:2015-04-15 11:16:23

标签: php laravel laravel-5

我在Laravel 5 Eloquent中意识到有一个叫做groupBy的函数。我通常像这样使用它

->groupBy('rating');

让我们在评级栏中说,整数有3种类型的评分:1,2 and 3如何将每种评级限制为10条记录?最好使用Eloquent但如果不可能,我仍然会接受查询构建器方法。

2 个答案:

答案 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文档,它也是一个不多的查询,如果你仍然混淆实现它,请告诉我。