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

站長資訊網
最全最豐富的資訊網站

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

本篇文章給大家帶來了關于Laravel的相關知識,其中主要給大家介紹在Laravel中怎么使用帶有條件聚合函數來計算總數的,下面一起來看一下,希望對需要的朋友有所幫助。

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

假如有電子郵件訂閱服務,希望顯示訂閱者的詳情統計頁面如下顯示

訂閱者總數 確認(confirmed) 未經證實(unconfirmed) 取消(cancelled) 拒絕(bounced)
200 150 50 10 5

出于本文的目的,假設我們有一個subscribers包含以下格式數據的數據庫表:

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();
登錄后復制

上面這樣肯定會產生五條語句,這樣做肯定是很不好。所以嘗試優化一下,會使用另一個方法解決執行多條語句的問題:

$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();
登錄后復制

上面先獲取全部訂閱者數據,然后再對這個結果集進行條件統計,使用集合.模型多條數據查詢返回IlluminateDatabaseEloquentCollection這樣的方法,只適合再數據量不大的時候使用,如果我們的應用程序有數千或數百萬訂閱者,處理的時間會很慢,并且會使用大量內存。

條件聚合

實際上有一種非常簡單的方法可以查詢計算這些總數。訣竅是將條件放在聚合函數中。下面是一個 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 轉自鏈接:https://learnku.com/articles/74652 版權聲明:著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請保留以上作者信息和原文鏈接。
登錄后復制

以下是在 Laravel 中使用查詢構建器編寫此查詢:

$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>
登錄后復制

Boolean 列(字段)

表遷移創建 boolean 字段 , model定義屬于轉換 此處不用model為代碼示例,可自行替換為model

如果使用boolean當字段列,將更容易,比如要查詢subscribers表中的用戶是否為擁有不同的角色權限。假設subscribers表中有is_adminis_treasureris_editoris_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();
登錄后復制

這是因為聚合函數count忽略null列。與PHP中false || null返回false不同,在SQL(以及JavaScript)中,它返回null。基本上,如果A可以強制為真,則A || B返回值A;否則,返回B

這段話如果沒理解,就看我下面說明:
使用laravel的boolean列,實際數據表里字段為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
登錄后復制

翻譯原文:本文只是翻譯一下大概意思,作為自己單純記錄使用

推薦學習:《laravel視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
欧美熟妇精品一区二区蜜桃视频| 日产乱码一二三区别免费观看 | 国产亚洲人成A在线V网站| 国产乱码卡二卡三卡43| 火柴人战争遗产破解版| 久久亚洲AV成人无码国产最大| 女人18毛片水真多免费看| 日本熟妇大屁股人妻| 无码精品人妻一区二区三区免费看| 亚洲AV永久无码精品秋霞电影秋| 亚洲人成无码网站18禁10| 中文字幕在线观看| 成人午夜免费无码福利片| 国产精品线在线精品| 久久99精品国产自在现线小黄鸭| 蜜芽AⅤ色欲AV浪潮夜夜嗨 | 部长来家里喝酒日剧叫什么| 国产寡妇XXXX猛交| 精品国品一二三产品区别在线观看| 美女扒开裤衩让男人桶爽| 日本漂亮妈妈7在观有限中子| 我把护士日出水了视频| 亚洲人成网站色7799| 99视频国产精品免费观看| 国产白丝护士AV在线网站| 精品国产乱码久久久久久浪潮| 美女脱个精光露出奶头和尿口 | 人妻少妇精品国语对白| 午夜无码伦费影视在线观看果冻| 一边做饭一边躁狂的原因分析| 办公室跪下拉开拉链吃应用的优点| 国产麻豆剧传媒精品国产AV蜜桃| 久久精品无码一区二区WWW| 人妻精品久久无码区| 亚洲AⅤ熟女高潮30P| 重囗味SM在线观看无码| 公交车里抓着摇曳的手环诗情 | 国产日产免费高清欧美一区| 鲁丝片一区二区三区免费| 色综合AV综合无码综合网站| 亚洲色精品AⅤ一区区三区| 被多男摁住灌浓精| 精产国品一二三产区区别在线观看| 欧美成人一区二区三区在线视频 | 玩弄中国白嫩少妇HD乱| 永久免费无码Av成人性色AV| 丰满人爽人妻AXXXXHD| 久久精品国产亚洲精品| 三个女儿一锅烩大团圆全文阅读 | 国产精品日韩专区第一页| 蜜臀AⅤ免费网站| 无码中文字幕AⅤ精品影院| 中文字幕精品久久久久人妻 | 亚洲AV无码一区二区乱孑伦AS| A级毛片免费全部播放| 国产在线乱码一区二区三区| 欧美性猛交XXXX乱大交视频| 亚洲JIZZJIZZ中国妇女| 波多野结衣av电影在线观看| 久久国产香蕉一区精品蜜桃| 少女のトゲ在线观看动漫| 中文字幕无码日韩欧免费软件| 国产乱子伦精品无码码专区| 欧美日韩视频一区二区| 亚洲精品无码日韩国产不卡Av | 我的妺妺h伦浴室无码视频| 中文字幕日韩欧美一区二区三区| 国产欧美精品一区二区三区| 人妻AV中文字幕无码专区| 亚洲熟女乱色一区二区三区| 国产成人精品午夜二三区波多野| 免费中国最大但人文艺术| 亚洲AV午夜福利精品一区人妖 | 精品无码一区二区三区水蜜桃| 搡老女人911熟妇老熟女| 中文字幕亚洲综合久久蜜桃| 好涨好爽好硬免费视频| 少妇人妻无码精品视频APP| 337P亚洲裸体人体| 精品无码久久久久国产APP| 特级毛片A级毛片在线播放WWW| 99久久久无码国产精品免费| 久久99热精品免费观看| 午夜DJ在线观看免费完整版社区| WWW国产成人免费观看视频| 久久久久亚洲AV成人网人人| 亚洲AⅤ无码牛牛影视| 堕落女教师动漫全无修| 欧美高清性色生活片免费观看| 亚洲日韩一区二区三区黑人| 国产偷国产偷亚洲高清日韩| 少妇伦子伦情品无吗| EEUSS影院免费最电影| 狂野欧美性猛交XXXX| 亚洲国产成人精品青青草原| 国产精品久久久久久久久久久不卡| 人妻无码系列一区二区三区| 中文字幕亚洲综合久久蜜桃 | 国产欧美另类久久精品蜜芽| 色欲丰满熟妇人妻av一区二区| JULIA绝顶快感高潮在线| 蜜臀AV无码人妻精品| 野花电影3在线观看免费| 激情偷乱人伦小说免费看| 无码中文亚洲AV吉吉影音先锋| 国产 国语对白 露脸| 日产无人区一线二线三线观看| JAPANESE嫩21VIDE| 欧美成人精品第一区| 2823理论片在线播放| 乱人伦中文视频在线| 一本大道东京热无码视频| 精品久久一区二区乱码| 亚洲VA在线VA天堂VA无码| 国产亚洲一区二区手机在线观看| 天天爽夜夜爽夜夜爽| 国产 精品 自在自线| 熟妇毛耸耸浓密茂盛| 国产69精品久久久久777| 色偷偷888欧美精品久久久| 波多野结衣乳巨码无在线观看| 欧美老少配XXXOOO性HD| AV大片在线无码免费| 欧美乱人伦中文字幕在线| CHINESE新版少妇嫖妓VI| 欧美内射潮喷一区二虎| FREE少妇野战HD| 欧美日韩综合精品一区二区 | 天天躁夜夜躁天干天干2020| 国产成人精品123区免费视频| 少妇愉情理仑片高潮| 国产JIZZJIZZ麻豆全部免| 天堂8А√中文在线官网| 国产精品乱子伦XXXX| 亚洲AⅤ永久无码中文字幕| 国精产品一区二区三区有限 | 精品国产乱码久久久久久郑州公司| 亚洲国产精品第一区二区 | 国产精品爽黄69天堂A| 午夜无码一区二区三区在线观看| 国产偷自一区二区三区| 亚洲国产AⅤ精品一区二区30P| 精品日本久久久久久人妻日本| 亚洲一区二区三区无码中文字幕 | 77777欧美毛片777777| 欧美最猛性XXXXX(亚洲精品)| 成人A级毛片免费播放| 天堂8在线天堂资源BT| 国产午夜福利在线播放| 亚洲精品无码久久久久久久| 久久亚洲精精品中文字幕| 8X8Ⅹ成人免费视频在线观看| 青梅被从小摸到大H补课1视频| 粗大的内捧猛烈进出少妇| 天堂中文А√在线| 狠狠躁夜夜躁AV网站色| 又大又粗又爽ΑA级毛片| 欧美熟妇内射深插| 高潮喷视频在线无码| 性色AV无码专区亚洲AV毛片子| 精品无人区无码乱码毛片国产 | 女人18毛片A级毛片视频| 超碰97久久国产精品牛牛| CHINESE叫床国语VIDE| 全免费A敌肛交毛片免费| 国产69久久精品成人看 | 蜜桃av一区二区三区| SM调教贱屁股眼哭叫求饶H| 天堂А√在线最新版中文下载| 狠狠做深爱婷婷久久综合一区| 中文无码VR最新无码AV专区| 日本另类ΑV欧美另类AⅤ| 国产美女高潮流白浆视频| 一本大道香蕉在线精品| 亲子伦AV一区的三区| 国产精品日本一区二区在线播放| 亚洲色偷无码一区二区蜜桃AV| 欧美金妇欧美乱妇XXXX| 国产成人精品久久一区二区三区| 亚洲美女又黄又爽在线观看| 欧美黑人巨大手机在线观看| 国产高清自产拍AV在线| 亚洲色帝国综合婷婷久久| 琴乳液狂飙却被空吸入口中| 国产免费无遮挡吸奶头视频| 一下子就弄进去岳的身体| 日本少妇三级HD激情在线观看| 国产中年熟女高潮大集合| 50妺妺窝人体色www合集| 无码AV无码免费一区二区| 可播放的免费男同GAY| 丁香五月激情综合色婷婷| 亚洲精品乱码久久久久久不卡| 欧美亚洲国产片在线播放| 国产一区二区三区水蜜桃| 99V久久综合狠狠综合久久| 香蕉久久夜色精品升级完成| 年轻的少妇A级伦理| 国产性猛交╳XXX乱大交| AV无码久久久久不卡免费网站|