好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法

laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法

熱門標簽:400電話申請辦理 隨州銷售電銷機器人公司 全國各省地圖標注點 福建高頻外呼防封系統哪家好 周口網絡回撥外呼系統 百度地圖標注類型是酒店 網絡電話400申請 外呼系統人工客服 商丘外呼系統好處

查詢構造器簡介

Laravel查詢構造器(query builder)提供方便、流暢的接口,用來建立及執行數據庫查找語法

使用PDO參數綁定,以保護應用程序免于SQL注入。因此傳入的參數不需額外轉義特殊字符

基本可以滿足所有的數據庫操作,而且在所有支持的數據庫系統上都可以執行

引言

今天給大家介紹一下laravel查詢構造器的一個小技巧,在官方文檔示例中沒有詳細提到,也不是啥高端技巧,可能很多人在用了,不知道的同學可以看看。

在業務代碼中經常會根據不同條件來查詢,舉個簡單例子,我們現在要查詢用戶列表,按時間倒序排列,可能會有status和type作為限定條件。

一開始我是這樣寫的

 if($status  $type) {
 $users = User::where('status', $status)->where('type', $type)->latest()->get();
 } else if ($status) {
 $users = User::where('status', $status)->latest()->get(); 
 } else if ($type) {
 $users = User::where('status', $type)->latest()->get();
 } else {
 $users = User::latest()->get(); 
 }

這個代碼真的很丑陋,很多公共代碼,比如->latest()->get(),寫了四遍,如果產品說今天我們要正序排列,那你得改四個地方。雖然借助編輯器改一下也很快,不過要知道這只是個最簡單的例子。

看了下文檔有個when方法進行條件判斷,一堆閉包也不是很理想。我堅信肯定有更優雅的寫法,于是上stackoverflow搜了一波,果然萬能的歪果仁給了我答案。

改進后的寫法:

 $query = User::query();
 // 如果用DB: $query = DB::table('user'); 
 if ($status) {
  $query->where('status', $status);
 }
 if ($type) {
  $query->where('type', $type);
 } 
 $users = $query->latest()->get();

用變量保存查詢構造器實例,然后在其上疊加約束條件,最后get集合。公共部分放在首尾,結構清晰,是不是高下立判啊?

而且我們還可以把$query當成參數傳入方法或函數中,將公共邏輯封裝在一起,方便多處調用:

 function foo($query) {
  $query->with(['girl', 'gay'])
    ->latest()
    ->get();
 } 
 $query = User::query();
 $users = foo($query);

這種寫法有一個注意事項,一旦你在$query上調用where等約束方法,就會改變此query,有時候我們需要提前clone一個query。

舉例說明,比如我們同時要拿到type為1和2的users

 $query_1 = User::query();
 $query_2 = clone $query_1; 
 $users_1 = $query_1->where('type', 1)->latest()->get();
 $users_2 = $query_2->where('type', 2)->latest()->get();
 // 錯誤 $users_2 = $query_1->where('type', 1)->latest()->get();
 // 這樣寫得到得是type = 1 and $type = 2

laravel的文檔里雖然沒有寫這種示例,但是提了一下:

你可以使用 DB facade 的 table 方法開始查詢。這個 table 方法針對查詢表返回一個查詢構造器實例,允許你在查詢時鏈式調用更多約束,并使用 get 方法獲取最終結果

題外話

以前聽一些老前輩說他們不要只會百度的程序員,當時感覺真裝嗶,不都是搜索引擎,因為我那時不用google。現在我也不愿意和只會百度的共事了,百度只是個廣告搜索嘛,搜出來的都是些啥玩意。

google、stackoverflow真是個好東西,很多歪果仁知識豐富,解答專業,從計算機歷史到操作系統、數據庫、各種編程語言,幫我de了好多bug。在segmentfault這么打廣告是不是不好,溜了!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

Reference:

  1. How to create multiple where clause query using Laravel Eloquent? - stackoverflow
  2. Model::query - laravelAPI
您可能感興趣的文章:
  • Laravel框架DB facade數據庫操作詳解
  • Laravel5.7 數據庫操作遷移的實現方法
  • PHP開發框架Laravel數據庫操作方法總結
  • Laravel5中實現模糊匹配加多條件查詢功能的方法
  • 使用Laravel中的查詢構造器實現增刪改查功能
  • 解決laravel查詢構造器中的別名問題
  • Laravel 5框架學習之Eloquent (laravel 的ORM)
  • 詳解PHP的Laravel框架中Eloquent對象關系映射使用
  • Laravel 5框架學習之Eloquent 關系
  • Laravel Eloquent ORM 實現查詢表中指定的字段
  • Laravel5.7 Eloquent ORM快速入門詳解
  • laravel框架數據庫操作、查詢構建器、Eloquent ORM操作實例分析

標簽:南寧 十堰 佛山 定西 樂山 海南 迪慶 六安

巨人網絡通訊聲明:本文標題《laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法》,本文關鍵詞  laravel,技巧,之,查詢,構造,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法》相關的同類信息!
  • 本頁收集關于laravel技巧之查詢構造器Query Builder疊加鏈式調用的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 性刺激的三级视频在线观看| 东京一本热| 曰本一级毛片免费| 很黄的视频软件| 又黄又爽的免费视频| 秋霞韩国理伦片在线视频观看| 中文字幕一级片| 白丝女仆猛?喷水爽自慰| 少妇被猛烈挺进爽爽视频| 久久99精品久久久久久按摩女 | 精品多人P群派对| 高跟91????白丝| 99成人??国产精品视频| 精品人妻无码专区在线视频| 9丨精品国产高清自在线看| 亚洲国产片高清在线观看| 波多久久亚洲AV精品无码| 日本免费一区二区三区视频观看| 国产丝袜91久久久久久久久| 欧美做受???韩国金先生| 黑料网蘑菇视频17c在线观看| 717秋霞电影午夜仑片观看| 粉色视频入口在线网站| 色老板69堂凹凸视频| 免费无码又爽又刺激聊天APP| 男人天堂va| 书房桌下h野战| 武则天级淫片a级中文| 色桃影院| 美国豪放女大兵| 日本交换无码亚洲成a人片| GayFree-GayTube| 国产xvideos| 美女视频黄a视频美女大全| 他是疯批(强制肉 高H 1V1)| 激吻抚胸呻吟声床戏视频| 囯产精品宾馆在线精品酒店| 日产精品一线二线三线芒果| 亚洲国产蜜桃在线看| ??成人直播色情裸体美女情交片| 啪啪国产视频|