Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()
Laravel 5.5
Linux mint 18
PHPStorm
最近剛玩Laravel,手冊(cè)源碼還沒來得及看完就躍躍欲試做了個(gè)小項(xiàng)目,其中有個(gè)需求是分組查詢數(shù)據(jù)庫中的一個(gè)字段并返回每個(gè)分組中的數(shù)量,還是去翻手冊(cè)(手冊(cè)確實(shí)夠簡(jiǎn)單):
groupBy 和 having 方法可用來對(duì)查詢結(jié)果進(jìn)行分組。having 方法的用法和 where 方法類似: $users = DB::table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get();
網(wǎng)上去查,發(fā)現(xiàn)一個(gè)輪子
$user_info = DB::table('usermetas') ->select('browser', DB::raw('count(*) as total')) ->groupBy('browser') ->get();
再去查手冊(cè)
## 指定一個(gè) Select 子句# 當(dāng)然,你并不會(huì)總是想從數(shù)據(jù)表中選出所有的字段。這時(shí)可使用 select 方法自定義一個(gè) select 子句來查詢指定的字段: $users = DB::table('users')->select('name', 'email as user_email')->get(); ## 原始表達(dá)式# 有時(shí)候你可能需要在查詢中使用原始表達(dá)式。這些表達(dá)式將會(huì)被當(dāng)作字符串注入到查詢中,所以要小心避免造成 SQL 注入攻擊!要?jiǎng)?chuàng)建一個(gè)原始表達(dá)式,可以使用 DB::raw 方法: $users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
可惜總是愛折騰,不想著用點(diǎn)奇跡淫巧就對(duì)不起自己這手藝人,于是有了:
$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');
我用了個(gè)Data(Model),返回的是個(gè)Builder對(duì)象,而此處卻要一個(gè)字符串,所以改回了
$sql = DB::raw('count(*) as value');
此時(shí)$sql是個(gè)string,至于有木有辦法在此處用Model,慢慢研究吧,任重道遠(yuǎn)!
參考:
Laravel Eloquent groupBy() AND also return count of each group
以上這篇Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
phpstudy本地環(huán)境搭建超詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于phpstudy本地環(huán)境搭建超詳細(xì)圖文教程的相關(guān)資料,phpStudy是集安全、高效、功能于一體且完全免費(fèi)的一鍵服務(wù)器環(huán)境搭建軟件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07PHP實(shí)現(xiàn)無限分類的實(shí)現(xiàn)方法
無限級(jí)分類是一種設(shè)計(jì)技巧,在開發(fā)中經(jīng)常使用,本篇文章主要介紹PHP實(shí)現(xiàn)無限分類的實(shí)現(xiàn)方法,有需要的可以了解一下。2016-11-11ThinkPHP自動(dòng)完成中使用函數(shù)與回調(diào)方法實(shí)例
這篇文章主要介紹了ThinkPHP自動(dòng)完成中使用函數(shù)與回調(diào)方法,實(shí)例分析了ThinkPHP中自動(dòng)填充的用法以及使用函數(shù)與回調(diào)的方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-11laravel執(zhí)行php artisan migrate報(bào)錯(cuò)的解決方法
今天小編就為大家分享一篇laravel執(zhí)行php artisan migrate報(bào)錯(cuò)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10PHP仿博客園 個(gè)人博客(2) 數(shù)據(jù)庫增添改刪
先謝謝大家的鼓勵(lì)與支持,這是第2篇了。也是這個(gè)博客系統(tǒng)最核心的東西。這個(gè)博客寫完后,我會(huì)把它放在我的博客網(wǎng)站。這里也有我的一個(gè)簡(jiǎn)歷2013-07-07PHP處理SQL腳本文件導(dǎo)入到MySQL的代碼實(shí)例
通常在制作安裝程式,數(shù)據(jù)備份程序的時(shí)候會(huì)要用到這樣的代碼,我看網(wǎng)上有是有不太多,而且有些也不是很好用,有時(shí)候這種代碼直接用現(xiàn)成的可以節(jié)省很多時(shí)間,那么我就從stackoverflow轉(zhuǎn)了一個(gè)過來,需要的朋友可以參考下2014-03-03基于curl數(shù)據(jù)采集之正則處理函數(shù)get_matches的使用
本篇文章介紹了,基于curl數(shù)據(jù)采集之正則處理函數(shù)get_matches的使用。需要的朋友參考下2013-04-04