st-lyt 的个人博客 / 18 / 6 / 创建于 5年前 / 更新于 5年前
需要将使用in查询的字段写成闭包的形式
$where['status'] = 1; $ids = [1,2]; $where[] = [function($query) use ($ids){ $query->whereIn('id', $ids); }]; $list = User::where($where) ->get();
生成sql如下
select * from `users` where (`status` = 1 and (`id` in (1, 2)))
本作品采用《CC 协议》,转载必须注明作者和本文链接
试了下,可以省去 'id' =>
'id' =>
User::where('status',1)->whereIn('id',[1,2,3,4,5])->get(); 为什么搞那么复杂?
还有这种写法不错!我使用的这种 $where[] = ['in'=>['tn_user_base.id'=>$medical_number_ids]];
我一般直接使用 when()
使用 when 比较好理解,使闭包看着好怪。
$status = 1; $ids = [1,2]; User::when($status, function ($query, $status) { return $query->where('status', $status); }) ->when($ids, function ($query, $ids) { return $query->whereIn('id', $ids); }) ->get();
问下,whereIn('字段',数组) 这数组的长度是否有限呢? 或者说$ids 过长怎么优化处理呢?
我要举报该,理由是:
推荐文章: