Laravel 8 條件語句

2021-07-19 11:14 更新

有時(shí)候你可能想要子句只適用于某個(gè)情況為真時(shí)才執(zhí)行查詢。例如你可能只想給定值在請(qǐng)求中存在的情況下才應(yīng)用 where 語句。 你可以通過使用 when 方法來實(shí)現(xiàn):

$role = $request->input('role');

$users = DB::table('users')
                ->when($role, function ($query, $role) {
                    return $query->where('role_id', $role);
                })
                ->get(); 

when 方法只有在第一個(gè)參數(shù)為 true 的時(shí)候才執(zhí)行給的的閉包。如果第一個(gè)參數(shù)為 false ,那么這個(gè)閉包將不會(huì)被執(zhí)行

你可以傳遞另一個(gè)閉包作為 when 方法的第三個(gè)參數(shù)。 該閉包會(huì)在第一個(gè)參數(shù)為 false 的情況下執(zhí)行。為了說明如何使用這個(gè)特性,我們來配置一個(gè)查詢的默認(rèn)排序:

$sortBy = null;

$users = DB::table('users')
                ->when($sortBy, function ($query, $sortBy) {
                    return $query->orderBy($sortBy);
                }, function ($query) {
                    return $query->orderBy('name');
                })
                ->get(); 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)