高级 Wheres
群组化参数
有些时候你需要更高级的 where 子句,如「where exists」或嵌套的群组化参数。Laravel 的查询构造器也可以处理这样的情况:
DB::table("users")
->where("name", "=", "John")
->orWhere(function($query)
{
$query->where("votes", ">", 100)
->where("title", "<>", "Admin");
})
->get();
上面的查找语法会产生下方的 SQL:
select * from users where name = "John" or (votes > 100 and title <> "Admin")
Exists 语法
DB::table("users")
->whereExists(function($query)
{
$query->select(DB::raw(1))
->from("orders")
->whereRaw("orders.user_id = users.id");
})
->get();
上面的查找语法会产生下方的 SQL:
select * from users
where exists (
select 1 from orders where orders.user_id = users.id
)