成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

一文詳解Laravel用聚合函數(shù)計(jì)算總數(shù)(附代碼示例)

本篇文章給大家?guī)?lái)了關(guān)于Laravel的相關(guān)知識(shí),其中主要給大家介紹在Laravel中怎么使用帶有條件聚合函數(shù)來(lái)計(jì)算總數(shù)的,下面一起來(lái)看一下,希望對(duì)需要的朋友有所幫助。

一文詳解Laravel用聚合函數(shù)計(jì)算總數(shù)(附代碼示例)

假如有電子郵件訂閱服務(wù),希望顯示訂閱者的詳情統(tǒng)計(jì)頁(yè)面如下顯示

訂閱者總數(shù) 確認(rèn)(confirmed) 未經(jīng)證實(shí)(unconfirmed) 取消(cancelled) 拒絕(bounced)
200 150 50 10 5

出于本文的目的,假設(shè)我們有一個(gè)subscribers包含以下格式數(shù)據(jù)的數(shù)據(jù)庫(kù)表:

name email status
小明 adam@hotmeteor.com confirmed
小紅 taylor@laravel.com unconfirmed
小軍 jonathan@reinink.ca cancelled
小花 adam.wathan@gmail.com bounced

大部分人的做法:

$total = Subscriber::count(); $confirmed = Subscriber::where('status', 'confirmed')->count(); $unconfirmed = Subscriber::where('status', 'unconfirmed')->count(); $cancelled = Subscriber::where('status', 'cancelled')->count(); $bounced = Subscriber::where('status', 'bounced')->count();
登錄后復(fù)制

上面這樣肯定會(huì)產(chǎn)生五條語(yǔ)句,這樣做肯定是很不好。所以嘗試優(yōu)化一下,會(huì)使用另一個(gè)方法解決執(zhí)行多條語(yǔ)句的問(wèn)題:

$subscribers = Subscriber::all(); $total = $subscribers->count(); $confirmed = $subscribers->where('status', 'confirmed')->count(); $unconfirmed = $subscribers->where('status', 'unconfirmed')->count(); $cancelled = $subscribers->where('status', 'cancelled')->count(); $bounced = $subscribers->where('status', 'bounced')->count();
登錄后復(fù)制

上面先獲取全部訂閱者數(shù)據(jù),然后再對(duì)這個(gè)結(jié)果集進(jìn)行條件統(tǒng)計(jì),使用集合.模型多條數(shù)據(jù)查詢返回IlluminateDatabaseEloquentCollection。這樣的方法,只適合再數(shù)據(jù)量不大的時(shí)候使用,如果我們的應(yīng)用程序有數(shù)千或數(shù)百萬(wàn)訂閱者,處理的時(shí)間會(huì)很慢,并且會(huì)使用大量?jī)?nèi)存。

條件聚合

實(shí)際上有一種非常簡(jiǎn)單的方法可以查詢計(jì)算這些總數(shù)。訣竅是將條件放在聚合函數(shù)中。下面是一個(gè) SQL 示例:

select   count(*) as total,   count(case when status = 'confirmed' then 1 end) as confirmed,   count(case when status = 'unconfirmed' then 1 end) as unconfirmed,   count(case when status = 'cancelled' then 1 end) as cancelled,   count(case when status = 'bounced' then 1 end) as bounced from subscribers   total | confirmed | unconfirmed | cancelled | bounced -------+-----------+-------------+-----------+---------    200 |       150 |          50 |        30 |      25  ———————————————— 原文作者:4pmzzzzzzzzzz 轉(zhuǎn)自鏈接:https://learnku.com/articles/74652 版權(quán)聲明:著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)保留以上作者信息和原文鏈接。
登錄后復(fù)制

以下是在 Laravel 中使用查詢構(gòu)建器編寫(xiě)此查詢:

$totals = DB::table('subscribers')     ->selectRaw('count(*) as total')     ->selectRaw("count(case when status = 'confirmed' then 1 end) as confirmed")     ->selectRaw("count(case when status = 'unconfirmed' then 1 end) as unconfirmed")     ->selectRaw("count(case when status = 'cancelled' then 1 end) as cancelled")     ->selectRaw("count(case when status = 'bounced' then 1 end) as bounced")     ->first();  <div>Total: {{ $totals->total }}</div> <div>Confirmed: {{ $totals->confirmed }}</div> <div>Unconfirmed: {{ $totals->unconfirmed }}</div> <div>Cancelled: {{ $totals->cancelled }}</div> <div>Bounced: {{ $totals->bounced }}</div>
登錄后復(fù)制

Boolean 列(字段)

表遷移創(chuàng)建 boolean 字段 , model定義屬于轉(zhuǎn)換 此處不用model為代碼示例,可自行替換為model

如果使用boolean當(dāng)字段列,將更容易,比如要查詢subscribers表中的用戶是否為擁有不同的角色權(quán)限。假設(shè)subscribers表中有is_admin、is_treasurer、is_editor、is_manager、字段

$totals = DB::table('subscribers')     ->selectRaw('count(*) as total')     ->selectRaw('count(is_admin or null) as admins')     ->selectRaw('count(is_treasurer or null) as treasurers')     ->selectRaw('count(is_editor or null) as editors')     ->selectRaw('count(is_manager or null) as managers')     ->first();
登錄后復(fù)制

這是因?yàn)榫酆虾瘮?shù)count忽略null列。與PHP中false || null返回false不同,在SQL(以及JavaScript)中,它返回null。基本上,如果A可以強(qiáng)制為真,則A || B返回值A;否則,返回B。

這段話如果沒(méi)理解,就看我下面說(shuō)明:
使用laravel的boolean列,實(shí)際數(shù)據(jù)表里字段為tinyint,值為0(false)1(true), 比如
小明的is_admin字段為1(true),count(is_admin or null)可以看作表示為(1 or null),這A為真 返回A,最終sql為count(is_admin)。
反之則是如is_admin字段為0(false),最終sql為count(null),則忽略此列

//PHP  返回 false var_dump(0 || null)   //JavaScript 返回 null console.log(0 || null)  //SQL 返回 null SELECT (0 or null) as result
登錄后復(fù)制

翻譯原文:本文只是翻譯一下大概意思,作為自己?jiǎn)渭冇涗浭褂?/p>

推薦學(xué)習(xí):《laravel視頻教程》

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
国色精品卡一卡2卡3卡4卡免费| 亚洲熟妇丰满XXXXX黑| 国产成人AV综合亚洲色欲美女| 国产99久久亚洲综合精品| 久久精品国产亚洲A∨麻豆| 亚洲AV成人永久网站www在线| 国产成人18黄网站免费观看| 少妇久久久被弄到高潮| 粗大的内捧猛烈进出少妇| 日本人和NEWBALANCE| 草莓视频在线观看18| 人妻AV综合天堂一区| 亚洲精选无码久久久| 狠狠色噜噜狠狠狠狠97| 亚洲AV永久无码精品放毛片一| 国产午夜亚洲精品午夜鲁丝片| 人妻无码全彩里番ACG视频 | 成人奭片免费观看| 日本久久久WWW成人免费毛片丨| 边吃奶边添下面好爽| 日本丰满妇人成熟免费中文字幕 | 亚洲码欧美码一区二区三区| 精品国际久久久久999波多野| 亚洲国产一区二区三区亚瑟| 精品少妇人妻AV一区二区| 亚洲人成人网站色www小说| 久久精品国产亚洲AV无码麻豆 | 波多野结衣TORRENT| 日本最大胆的人文体艺术| 中文字幕无码AV正片AV| 男人用嘴添女人私密视频| 99热精国产这里只有精品| 强奷漂亮饱满雪白少妇AV| 成人无码A级毛片免费| 四虎影视永久无码精品| 国产麻花豆剧传媒精品MV| 色狠狠色噜噜AV一区| 丰满妇女强高潮ⅩXXX| 无码国产成人午夜电影在线观看| 国产无遮挡裸体免费视频| 少妇人妻中文字幕| 边做奶水边喷H高H共妻| 少妇被粗大的猛烈进出96影院 | 久久人妻内射无码一区三区| 中文乱码35页在线观看| 亲子伦AV一区的三区| 丰满的人妻沦为玩物在线| 无码人妻在线视频| 精品国产性色无码AV网站| 亚洲中文AⅤ中文字幕在线| 男男车车CP视频| 差差差很疼30分钟视频 | 尿眼BDSM奇特虐| 成年免费A级毛片免费看| 为了升职丈夫把我献给他们领导| 国精品人妻无码一区免费视频电影| 亚洲人成电影一区二区在线| 蜜桃人妻无码AⅤ中文字幕 | 亚洲乱色熟女一区二区三区蜜臀| 麻豆AV天堂一区二区香蕉| А√天堂中文官网在线BT| 婷婷丁香六月激情综合啪| 厨房掀开馊了裙子挺进电影 | 拧花蒂尿用力按凸起喷水尿AV| 成年动作片AV免费网站| 性色AV免费网站| 浪潮AV激情高潮国产蜜臀| JIZZJIZZ国产精品久久| 天堂√最新版中文在线天堂| 狠狠综合久久狠狠88亚洲| 亚洲AV永久无码精品| 久久综合九色欧美综合狠狠| YIN荡到骨子里的SAO货| 无卡无码无免费毛片| 久久高清超碰AV热热久久| 亚洲中文字幕无码AV| 欧美日韩在线亚洲一区蜜芽| 国产AV无码专区亚汌A√| 亚洲国产欧美在线成人| 妺妺晚上扒我内裤吃我精子| 大家闺秀VS糙汉将军古言| 亚洲国产A∨无码中文777| 男女无遮挡高清视频免费看 | 久久久国产精品亚洲一区| YY111111少妇影院理论片| 无码熟熟妇丰满人妻啪啪| 久久亚洲精品成人AV无码涩涩屋| 不卡高清AV手机在线观看| 亚洲AV无码国产剧情| 免费人妻无码不卡中文字幕18禁 | 亚洲熟女综合色一区二区三区| 欧美熟妇精品视频网免费观看| 国产精品一国产精品| 真实的国产乱ⅩXXX66小说| 民工把奶头吸得又大又长| 国产V亚洲V天堂无码网站| 亚洲午夜性春猛交XXXX偷窥| 人妻无码一区二区三区四区| 国产在线看片无码不卡| 94久久国产乱子伦精品免费| 欧美性XXXX极品少妇| 国产免费福利在线视频| √天堂资源地址在线官网| 我跟闺蜜公交车被弄到高潮| 老师趴讲台屁股撅起来作文| 丰满少妇BBWBBW| 艳妇乳肉豪妇荡乳在线观看| 色婷婷综合中文久久一本| 久久久久久毛片精品免费不卡| 大陆熟妇丰满多毛XXXX| 亚洲综合AV永久无码精品一区二 | 亚洲午夜无码久久| 少妇性活BBBBBBBBB四川| 老阿姨哔哩哔哩B站肉片入口6| 国产A1A2A3| 中文曰本熟女久久| 香蕉久久人人97超碰CAOPR| 欧美VA久久久噜噜噜久久| 国产手机精品一区二区| 2021国产麻豆剧传媒在线| 亚洲AV成人无码www在线观看| 欧美性VIDEOS高清精品| 精品久久久久久无码人妻VR| 粗壮挺进人妻水蜜桃成熟漫画| 一本到无码AV专区无码不卡| 婷婷久久综合九色综合绿巨人| 免费又大粗又爽又黄少妇毛片| 国产无遮挡裸露视频免费| YELLOW免费观看高清在线| 亚洲欧洲精品成人久久曰影片| 色综合久久88色综合天天| 美女自拍高潮流白浆| 国产一在线精品一区在线观看| 爱情岛网站亚洲禁18进入| 亚洲无人区码二码三码区别| 天天躁日日躁狠狠躁AV| 欧美极品少妇XXXXⅩ喷水| 国产白嫩漂亮美女在线观看| 中文字幕一区日韩精品| 亚洲AV永久中文无码精品综合| 日韩精品无码AV中文无码版| 里番本子侵犯肉全彩无码| 国产性色强伦免费视频| 差差漫画页面免费漫画欢迎你| 呦交小U女国产精品视频| 日本熟妇色熟妇在线视频播放 | 少妇高潮XXXⅩ白浆699| 免费无人区一码二码乱码| 精品成人AV一区二区三区| 国产成人剧情AV麻豆果冻| CHINESE中国丰满熟妇| 亚洲综合色区另类AV| 亚洲 春色 另类 小说| 日老太太毛茸茸B.内射| 女人18毛片A级毛片视频| 久久99精品国产99久久| 国产免费AV片在线播放| 丁香花在线观看免费高清版| 50岁熟妇的呻吟声对白| 亚洲色大成网站WWW| 新JAPANESEVIDEO乱| 色欲AⅤ蜜臀AV在线播放| 欧美性爱一二三区| 麻豆国产成人AV高清在线| 精品欧洲AV无码一区二区三区| 国产精品高潮呻吟久久AV| 成.人.大.片在线观看| 99久久精品无码一区二区毛片 | 无码人妻丰满熟妇啪啪网不卡| 日本XXXX色视频在线观看免费, | 国产免费AV片无码永久免费| 丰满爆乳一区二区三区| ZLJZLJZLJ日本人水多多| 中文字幕人妻丝袜成熟乱| 亚洲性色AV片在线观看网址| 亚洲AV鲁丝一区二区三区| 玩弄丰满少妇XXXXX性多毛| 日产无码精品一区二区三区| 欧美性爱操逼大鸡吧| 免费专区SM美脚践踏调教视频| 久久久久久精品免费免费R| 精产国品一二三区别9977| 国产凸凹视频一区二区| 国产成人无码免费看片软件| 成熟老年妇女毛茸茸| 办公室揉弄高潮嗯啊免费视频| BGMBGMBGM欧美老妇| 337P日本大胆欧洲色噜噜| 真实国产乱子伦沙发睡午觉| 亚洲熟妇无码AV| 亚洲日本一区二区三区在线不卡| 亚洲成成熟女人专区| 亚洲AV午夜福利精品一区二区| 西瓜在线看免费观看视频| 无码人妻精品内射一二三AV| 少妇爆乳无码AV专区网站寝取| 日韩亚洲欧美精品综合| 日日摸夜夜添无码无码AV| 日日摸夜夜添夜夜添AV| 色噜噜影院狠狠狠噜|