高级 Wheres

2018-02-24 15:52 更新

群组化参数

有些时候你需要更高级的 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
)
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号