Laravel多條件where查詢語(yǔ)句使用詳解
引言
在使用 Laravel 開發(fā)應(yīng)用的時(shí)候,還是會(huì)經(jīng)常遇到多條件的查詢語(yǔ)句,比如一個(gè)網(wǎng)站的商品篩選頁(yè)面就有可能是這樣子:
http://jd.com/products?color=black&size=xl&orderBy=price&sort=desc
使用多條件的 where 語(yǔ)句
這種方式的篩選其實(shí)我們就會(huì)使用多條件的 where 語(yǔ)句來(lái)做,比如我們通常會(huì)看到類似下面的代碼:
$query = Product::newInstance(); if ($request->color) { $query->whereColor($request->color); } if ($request->size) { $query->whereSize($request->size); } if ($request->orderBy && $request->sort) { $query->orderby($request->orderBy, $request->sort); } $products = $query->get();
那如果說(shuō),你需要一個(gè)默認(rèn)的排序結(jié)果的話,可以這樣:
...其他代碼 if ($request->orderBy && $request->sort) { $query->orderby($request->orderBy, $request->sort); } else { $query->orderby('price', 'desc'); } ...其他代碼
使用條件性的 where 查詢
然而如果說(shuō)你使用條件性的 where 查詢的話,可以這樣:
$products = Product::when($request->color, function ($query) use ($request) { return $query->whereColor($request->color); }) ->when($request->size, function ($query) use ($request) { return $query->whereSize($request->size); }) ->when($request->orderBy && $request->sort, function ($query) use ($request) { return $query->orderBy($request->orderBy, $request->sort); }) ->get();
需要默認(rèn)排序的情況則是這樣:
...其他代碼 ->when($request->orderBy && $request->sort, function ($query) use ($request) { return $query->orderBy($request->orderBy, $request->sort); }, function ($query) { return $query->latest('price'); }) ...其他代碼
到這里就可以解決 Laravel 的多條件查詢了!
以上就是Laravel多條件where查詢語(yǔ)句使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Laravel多條件where查詢的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
thinkPHP下的widget擴(kuò)展用法實(shí)例分析
這篇文章主要介紹了thinkPHP下的widget擴(kuò)展用法,結(jié)合實(shí)例形式分析widget擴(kuò)展的具體使用技巧與注意事項(xiàng),需要的朋友可以參考下2015-12-12thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
這篇文章主要介紹了如何使用thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證,筆者也是菜鳥,一步步實(shí)驗(yàn)才得到的結(jié)果,這里給需要的朋友可以參考下2014-12-12淺談laravel orm 中的一對(duì)多關(guān)系 hasMany
今天小編就為大家分享一篇淺談laravel orm 中的一對(duì)多關(guān)系 hasMany,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10thinkPHP中驗(yàn)證碼的簡(jiǎn)單使用方法
這篇文章主要介紹了thinkPHP中驗(yàn)證碼的簡(jiǎn)單使用方法,涉及thinkPHP驗(yàn)證碼邏輯功能的實(shí)現(xiàn)與界面顯示的相關(guān)技巧,需要的朋友可以參考下2015-12-12php結(jié)合js實(shí)現(xiàn)點(diǎn)擊超鏈接執(zhí)行刪除確認(rèn)操作
本文是一篇超級(jí)簡(jiǎn)單的php結(jié)合js實(shí)現(xiàn)點(diǎn)擊超鏈接執(zhí)行js代碼,并確認(rèn)是否刪除數(shù)據(jù)庫(kù)數(shù)據(jù),附上全部源代碼,給需要的朋友參考下吧2014-10-10解決laravel 5.1報(bào)錯(cuò):No supported encrypter found的辦法
這篇文章主要給大家介紹了關(guān)于解決laravel 5.1報(bào)錯(cuò):No supported encrypter found的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06Yii 2.0實(shí)現(xiàn)聯(lián)表查詢加搜索分頁(yè)的方法示例
這篇文章主要給大家介紹了關(guān)于利用Yii 2.0實(shí)現(xiàn)聯(lián)表查詢加搜索分頁(yè)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08