主頁(yè) > 知識(shí)庫(kù) > Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()

Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()

熱門(mén)標(biāo)簽:江西電銷(xiāo)機(jī)器人收費(fèi) 高德地圖標(biāo)注位置怎么標(biāo)注 電銷(xiāo)機(jī)器人沒(méi)有效果怎么樣 杭州語(yǔ)音電銷(xiāo)機(jī)器人 天潤(rùn)融通外呼系統(tǒng)好嗎 江門(mén)回?fù)芡夂粝到y(tǒng) 泊頭在哪里辦理400電話 高德地圖標(biāo)注店鋪收費(fèi)嗎 欣思維地圖標(biāo)注

Laravel 5.5

Linux mint 18

PHPStorm

最近剛玩Laravel,手冊(cè)源碼還沒(méi)來(lái)得及看完就躍躍欲試做了個(gè)小項(xiàng)目,其中有個(gè)需求是分組查詢數(shù)據(jù)庫(kù)中的一個(gè)字段并返回每個(gè)分組中的數(shù)量,還是去翻手冊(cè)(手冊(cè)確實(shí)夠簡(jiǎn)單):

groupBy 和 having 方法可用來(lái)對(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 子句來(lái)查詢指定的字段:

$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();

可惜總是愛(ài)折騰,不想著用點(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è)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解SQL中Group By的使用教程
  • Django ORM 聚合查詢和分組查詢實(shí)現(xiàn)詳解
  • 分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解
  • MySQL分組查詢Group By實(shí)現(xiàn)原理詳解
  • 詳解MySQL中的分組查詢與連接查詢語(yǔ)句
  • sql 分組查詢問(wèn)題
  • Oracle中分組查詢group by用法規(guī)則詳解

標(biāo)簽:內(nèi)江 深圳 雙鴨山 駐馬店 江門(mén) 石嘴山 大同

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()》,本文關(guān)鍵詞  Laravel,實(shí)現(xiàn),Eloquent,模型,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Laravel 實(shí)現(xiàn)Eloquent模型分組查詢并返回每個(gè)分組的數(shù)量 groupBy()的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章