首页 > 解决方案 > 在 where 方法中使用原始查询会在查询生成中出错

问题描述

我有一个雄辩的查询

Role::where("(company_id = Auth::user()->company_id or name = 'admin')and id in(2,3)")->pluck('name');

根据我的雄辩,sql应该是

select `name` from `roles` where ( company_id = 1 or name = admin ) and id IN (2, 3) and `roles`.`deleted_at` is null

但它执行为

select `name` from `roles` where ( company_id = 1 or name = admin ) and id IN (2, 3) is null and `roles`.`deleted_at` is null

谁能帮我总结一下为什么is null在查询中应用了额外的条件?

注意:我正在使用软删除

标签: laravel-5

解决方案


您应该使用 whereRaw 而不是 where

Role::whereRaw("(company_id = Auth::user()->company_id or name = 'admin')and id in(2,3)")->pluck('name');

推荐阅读