1

ID を持つ DB にある行の数に基づいて、ユーザーの範囲を設定しようとしています。
私のデータセットは次のようになります(簡略化):

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

最初の 3 つの一意の名前を、左側の値が出現する回数で並べ替えます。
Laravelの雄弁なORMでそれを行うことはできますか?

結果は次のようになります。

John
Mike
Denis

ありがとう

4

2 に答える 2

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')->必要に応じて、代わりに を使用してクエリ ビルダー (Fluent) を使用することもできますModel::

:

  • DB::raw()バックティックを配置しないように Laravel に指示します。
  • take()行を制限します。
于 2013-04-17T07:18:58.403 に答える