Laravel 8 参数分组
有时候你需要创建更高级的 where 子句,例如「where exists」或者嵌套的参数分组。 Laravel 的查询构造器也能够处理这些。下面,让我们看一个在括号中进行分组约束的例子:
$users = DB::table('users')
->where('name', '=', 'John')
->where(function ($query) {
$query->where('votes', '>', 100)
->orWhere('title', '=', 'Admin');
})
->get();
你可以看到,通过使用 闭包
写入 where
的方法来创建一个查询构造器,用来约束一个分组。这个 闭包
接收一个查询实例,你可以使用这个实例来设置应该包含的约束。上面的例子将生成以下 SQL 语句:
select * from users where name = 'John' and (votes > 100 or title = 'Admin')
技巧:你在调用
orWhere
的时候,应该始终使用分组,以避免应用全局作用出现意外。