阅读(2837) (6)

Laravel 8 参数分组

2021-07-07 09:14:22 更新

有时候你需要创建更高级的 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 的时候,应该始终使用分组,以避免应用全局作用出现意外。