Laravel Eloquent数据排名

时间:2013-04-16 22:34:20

标签: php sql laravel

我正在尝试根据数据库中有多少行来定位用户。
我的数据集看起来像这样(简化):

A .... John
A .... John
B .... Mike
A .... John
B .... Mike
C .... Denis

我想要前三个唯一名称,按左边的值出现的次数排序 我能用Laravel雄辩的ORM做到吗?

结果将是:

John
Mike
Denis

由于

2 个答案:

答案 0 :(得分:4)

这就是你用Laravel的Eloquent ORM来做到这一点

Model::select('name')
->groupBy('name')
->orderBy(DB::raw('count(name)'), 'desc')
->take(3)
->get();

如果您使用的是Laravel 3,请使用蛇盒:

Model::select('name')->group_by('name')->order_by(DB::raw('count(name)'), 'desc')->take(3)->get();

如果您希望使用DB::table('tableName')->代替Model::,可以使用查询构建器(流利)。

备注

  • DB::raw()指示Laravel不要放 那里的背景。
  • take()限制行数。

答案 1 :(得分:0)

不是laravel解决方案,但它可能有效(纯SQL,特别是MySQL):

select name
from yourTable
where ... # Your filter conditions go here
group by name
order by count(id) desc
limit 3;

希望这有帮助