Laravel 8 參數(shù)分組

2021-07-19 11:12 更新

有時(shí)候你需要?jiǎng)?chuàng)建更高級(jí)的 where 子句,例如「where exists」或者嵌套的參數(shù)分組。 Laravel 的查詢構(gòu)造器也能夠處理這些。下面,讓我們看一個(gè)在括號(hào)中進(jìn)行分組約束的例子:

$users = DB::table('users')
           ->where('name', '=', 'John')
           ->where(function ($query) {
               $query->where('votes', '>', 100)
                     ->orWhere('title', '=', 'Admin');
           })
           ->get(); 

你可以看到,通過(guò)使用 閉包 寫入 where 的方法來(lái)創(chuàng)建一個(gè)查詢構(gòu)造器,用來(lái)約束一個(gè)分組。這個(gè) 閉包 接收一個(gè)查詢實(shí)例,你可以使用這個(gè)實(shí)例來(lái)設(shè)置應(yīng)該包含的約束。上面的例子將生成以下 SQL 語(yǔ)句:

select * from users where name = 'John' and (votes > 100 or title = 'Admin') 

技巧:你在調(diào)用 orWhere 的時(shí)候,應(yīng)該始終使用分組,以避免應(yīng)用全局作用出現(xiàn)意外。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)