Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個分組的數(shù)量 groupBy()
Laravel 5.5
Linux mint 18
PHPStorm
最近剛玩Laravel,手冊源碼還沒來得及看完就躍躍欲試做了個小項(xiàng)目,其中有個需求是分組查詢數(shù)據(jù)庫中的一個字段并返回每個分組中的數(shù)量,還是去翻手冊(手冊確實(shí)夠簡單):
groupBy 和 having 方法可用來對查詢結(jié)果進(jìn)行分組。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 子句#
當(dāng)然,你并不會總是想從數(shù)據(jù)表中選出所有的字段。這時可使用 select 方法自定義一個 select 子句來查詢指定的字段:
$users = DB::table('users')->select('name', 'email as user_email')->get();
## 原始表達(dá)式#
有時候你可能需要在查詢中使用原始表達(dá)式。這些表達(dá)式將會被當(dāng)作字符串注入到查詢中,所以要小心避免造成 SQL 注入攻擊!要創(chuàng)建一個原始表達(dá)式,可以使用 DB::raw 方法:
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
可惜總是愛折騰,不想著用點(diǎn)奇跡淫巧就對不起自己這手藝人,于是有了:
$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,慢慢研究吧,任重道遠(yuǎn)!
參考:
Laravel Eloquent groupBy() AND also return count of each group
以上這篇Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個分組的數(shù)量 groupBy()就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶
這篇文章主要給大家介紹了關(guān)于Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Laravel6.18.19具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
php實(shí)現(xiàn)utf-8轉(zhuǎn)unicode函數(shù)分享
這篇文章主要介紹了php實(shí)現(xiàn)utf-8轉(zhuǎn)unicode函數(shù)分享,需要的朋友可以參考下2015-01-01
Zend Framework教程之Application和Bootstrap用法詳解
這篇文章主要介紹了Zend Framework教程之Application和Bootstrap用法,結(jié)合實(shí)例形式詳細(xì)分析了Application和Bootstrap的功能,使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-03-03
Symfony2框架學(xué)習(xí)筆記之HTTP Cache用法詳解
這篇文章主要介紹了Symfony2框架HTTP Cache用法,結(jié)合實(shí)例形式分析了Symfony框架HTTP緩存的相關(guān)使用技巧,需要的朋友可以參考下2016-03-03
CI框架常用經(jīng)典操作類總結(jié)(路由,偽靜態(tài),分頁,session,驗(yàn)證碼等)
這篇文章主要介紹了CI框架常用經(jīng)典操作類,結(jié)合實(shí)例形式總結(jié)分析了CI框架URL、路由、偽靜態(tài)、分頁、session、驗(yàn)證碼等相關(guān)操作類與使用技巧,需要的朋友可以參考下2016-11-11
淺談thinkphp5 instance 的簡單實(shí)現(xiàn)
本篇文章主要介紹了淺談thinkphp5 instance 的簡單實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

