Laravel多條件where查詢語句使用詳解
引言
在使用 Laravel 開發(fā)應(yīng)用的時候,還是會經(jīng)常遇到多條件的查詢語句,比如一個網(wǎng)站的商品篩選頁面就有可能是這樣子:
http://jd.com/products?color=black&size=xl&orderBy=price&sort=desc
使用多條件的 where 語句
這種方式的篩選其實我們就會使用多條件的 where 語句來做,比如我們通常會看到類似下面的代碼:
$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();
那如果說,你需要一個默認(rèn)的排序結(jié)果的話,可以這樣:
...其他代碼 if ($request->orderBy && $request->sort) { $query->orderby($request->orderBy, $request->sort); } else { $query->orderby('price', 'desc'); } ...其他代碼
使用條件性的 where 查詢
然而如果說你使用條件性的 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查詢語句使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Laravel多條件where查詢的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺談laravel orm 中的一對多關(guān)系 hasMany
今天小編就為大家分享一篇淺談laravel orm 中的一對多關(guān)系 hasMany,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10php結(jié)合js實現(xiàn)點擊超鏈接執(zhí)行刪除確認(rèn)操作
本文是一篇超級簡單的php結(jié)合js實現(xiàn)點擊超鏈接執(zhí)行js代碼,并確認(rèn)是否刪除數(shù)據(jù)庫數(shù)據(jù),附上全部源代碼,給需要的朋友參考下吧2014-10-10解決laravel 5.1報錯:No supported encrypter found的辦法
這篇文章主要給大家介紹了關(guān)于解決laravel 5.1報錯:No supported encrypter found的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06Yii 2.0實現(xiàn)聯(lián)表查詢加搜索分頁的方法示例
這篇文章主要給大家介紹了關(guān)于利用Yii 2.0實現(xiàn)聯(lián)表查詢加搜索分頁的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08