他の列の中でも、ブラウザーバージョンの列を含むテーブルがあります。また、レコードセットから、各種類のブラウザがいくつあるかを知りたいだけです。そのため、次のような結果になる必要があります。Total Records:10; Internet Explorer 8:2; Chrome 25:4; Firefox 20:4.(すべて合計10まで)
これが私の2つのペンスです。
$user_info = Usermeta::groupBy('browser')->get();
もちろん、それぞれの数ではなく、3つのブラウザーのみが含まれています。これどうやってするの?
これは私のために働いています:
$user_info = DB::table('usermetas')
->select('browser', DB::raw('count(*) as total'))
->groupBy('browser')
->get();
これは私のために動作します(Laravel 5.1):
$user_info = Usermeta::groupBy('browser')->select('browser', DB::raw('count(*) as total'))->get();
ありがとう、アントニオ、
最後にlists
コマンドを追加したので、キーとカウントを持つ1つの配列のみを返します。
ララベル4
$user_info = DB::table('usermetas')
->select('browser', DB::raw('count(*) as total'))
->groupBy('browser')
->lists('total','browser');
Laravel 5.1
$user_info = DB::table('usermetas')
->select('browser', DB::raw('count(*) as total'))
->groupBy('browser')
->lists('total','browser')->all();
Laravel 5.2+
$user_info = DB::table('usermetas')
->select('browser', DB::raw('count(*) as total'))
->groupBy('browser')
->pluck('total','browser')->all();
同じように機能します。 getQuery()
は、テーブル参照を既に含んでいる基礎となるビルダーを返すだけです。
$browser_total_raw = DB::raw('count(*) as total');
$user_info = Usermeta::getQuery()
->select('browser', $browser_total_raw)
->groupBy('browser')
->pluck('total','browser');
コレクション、groupBy、およびcountを取得する場合:
$collection = ModelName::groupBy('group_id')
->selectRaw('count(*) as total, group_id')
->get();
乾杯!
config/database.php
を開くstrict
キー内部mysql
接続設定false
に設定します以下は、生のステートメントを使用せずにグループを処理するLaravelのより多くの方法です。
$sources = $sources->where('age','>', 31)->groupBy('age');
$output = null;
foreach($sources as $key => $source) {
foreach($source as $item) {
//get each item in the group
}
$output[$key] = $source->count();
}
GroupByの使用中に問題を数えました。だから私はやった:
$queryWithGroupBy->getQuery()->getCountForPagination(); //return int
$ queryWithGroupBy-> get()-> count()の問題は、結果をカウントする前にクエリが実行されることです。これは、count($ queryWithGroupBy-> get())を実行するだけなので役に立たないことです。
->groupBy('state_id','locality')
->havingRaw('count > 1 ')
->having('items.name','LIKE',"%$keyword%")
->orHavingRaw('brand LIKE ?',array("%$keyword%"))