308篇laravel中我不知道的查询构造器
一、你还可以传递条件数组到 where 函数中:
$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();
二、orwhere
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere(function($query) {
$query->where('name', 'Abigail')
->where('votes', '>', 50);
})
->get();
// SQL语句: select * from users where votes > 100 or (name = 'Abigail' and votes > 50)
三、whereColumn 方法用于比较两个字段的值是否相等:
whereColumn 方法用于比较两个字段的值是否相等:
$users = DB::table('users')
->whereColumn('first_name', 'last_name')
->get();
你也可以传入一个比较运算符:
$users = DB::table('users')
->whereColumn('updated_at', '>', 'created_at')
->get();
你也可以给 whereColumn 传递一个数组,他们之间会使用 and 运算符连接:
$users = DB::table('users')
->whereColumn([
['first_name', '=', 'last_name'],
['updated_at', '>', 'created_at'],
])->get();
四、Where Exists 语句
$users = 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
)
五、latest 和 oldest 方法让你以一种便捷的方式通过日期进行排序。它们默认使用 created_at 列作为排序依据。当然,你也可以传递自定义的列名:
$user = DB::table('users')
->latest()
->first();
六、条件语句
七、使用游标