Laravel多條件where查詢語句使用詳解
引言
在使用 Laravel 開發(fā)應(yīng)用的時(shí)候,還是會(huì)經(jīng)常遇到多條件的查詢語句,比如一個(gè)網(wǎng)站的商品篩選頁面就有可能是這樣子:
http://jd.com/products?color=black&size=xl&orderBy=price&sort=desc
使用多條件的 where 語句
這種方式的篩選其實(shí)我們就會(huì)使用多條件的 where 語句來做,比如我們通常會(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();那如果說,你需要一個(gè)默認(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)文章
thinkPHP下的widget擴(kuò)展用法實(shí)例分析
這篇文章主要介紹了thinkPHP下的widget擴(kuò)展用法,結(jié)合實(shí)例形式分析widget擴(kuò)展的具體使用技巧與注意事項(xiàng),需要的朋友可以參考下2015-12-12
thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
這篇文章主要介紹了如何使用thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證,筆者也是菜鳥,一步步實(shí)驗(yàn)才得到的結(jié)果,這里給需要的朋友可以參考下2014-12-12
淺談laravel orm 中的一對多關(guān)系 hasMany
今天小編就為大家分享一篇淺談laravel orm 中的一對多關(guān)系 hasMany,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
php結(jié)合js實(shí)現(xiàn)點(diǎn)擊超鏈接執(zhí)行刪除確認(rèn)操作
本文是一篇超級簡單的php結(jié)合js實(shí)現(xiàn)點(diǎn)擊超鏈接執(zhí)行js代碼,并確認(rèn)是否刪除數(shù)據(jù)庫數(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ì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-06-06
Yii 2.0實(shí)現(xiàn)聯(lián)表查詢加搜索分頁的方法示例
這篇文章主要給大家介紹了關(guān)于利用Yii 2.0實(shí)現(xiàn)聯(lián)表查詢加搜索分頁的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08

