Laravel 實現(xiàn)Eloquent模型分組查詢并返回每個分組的數(shù)量 groupBy()
Laravel 5.5
Linux mint 18
PHPStorm
最近剛玩Laravel,手冊源碼還沒來得及看完就躍躍欲試做了個小項目,其中有個需求是分組查詢數(shù)據(jù)庫中的一個字段并返回每個分組中的數(shù)量,還是去翻手冊(手冊確實夠簡單):
groupBy 和 having 方法可用來對查詢結(jié)果進行分組。having 方法的用法和 where 方法類似: $users = DB::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get();
網(wǎng)上去查,發(fā)現(xiàn)一個輪子
$user_info = DB::table('usermetas') ->select('browser', DB::raw('count(*) as total')) ->groupBy('browser') ->get();
再去查手冊
## 指定一個 Select 子句# 當然,你并不會總是想從數(shù)據(jù)表中選出所有的字段。這時可使用 select 方法自定義一個 select 子句來查詢指定的字段: $users = DB::table('users')->select('name', 'email as user_email')->get(); ## 原始表達式# 有時候你可能需要在查詢中使用原始表達式。這些表達式將會被當作字符串注入到查詢中,所以要小心避免造成 SQL 注入攻擊!要創(chuàng)建一個原始表達式,可以使用 DB::raw 方法: $users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
可惜總是愛折騰,不想著用點奇跡淫巧就對不起自己這手藝人,于是有了:
$sql = Data::raw('count(*) as value'); $obj = self::whereBetween('modified',[$begin,$end])->select('city as name',$sql) ->groupBy('city') ->get() ->toArray();
代碼也不客氣了,直接撂了挑子:
毛病出在這句身上:
$sql = Data::raw('count(*) as value');
我用了個Data(Model),返回的是個Builder對象,而此處卻要一個字符串,所以改回了
$sql = DB::raw('count(*) as value');
此時$sql是個string,至于有木有辦法在此處用Model,慢慢研究吧,任重道遠!
參考:
Laravel Eloquent groupBy() AND also return count of each group
以上這篇Laravel 實現(xiàn)Eloquent模型分組查詢并返回每個分組的數(shù)量 groupBy()就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
ThinkPHP自動完成中使用函數(shù)與回調(diào)方法實例
這篇文章主要介紹了ThinkPHP自動完成中使用函數(shù)與回調(diào)方法,實例分析了ThinkPHP中自動填充的用法以及使用函數(shù)與回調(diào)的方法,是非常實用的技巧,需要的朋友可以參考下2014-11-11laravel執(zhí)行php artisan migrate報錯的解決方法
今天小編就為大家分享一篇laravel執(zhí)行php artisan migrate報錯的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10PHP仿博客園 個人博客(2) 數(shù)據(jù)庫增添改刪
先謝謝大家的鼓勵與支持,這是第2篇了。也是這個博客系統(tǒng)最核心的東西。這個博客寫完后,我會把它放在我的博客網(wǎng)站。這里也有我的一個簡歷2013-07-07基于curl數(shù)據(jù)采集之正則處理函數(shù)get_matches的使用
本篇文章介紹了,基于curl數(shù)據(jù)采集之正則處理函數(shù)get_matches的使用。需要的朋友參考下2013-04-04