laravel-5 - 在 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
在查询中应用了额外的条件?
注意:我正在使用软删除
解决方案
您应该使用 whereRaw 而不是 where
Role::whereRaw("(company_id = Auth::user()->company_id or name = 'admin')and id in(2,3)")->pluck('name');
推荐阅读
- javascript - 获取调用中的 React API 处理错误:TypeError-无法读取未定义的属性“temp”
- python - 如何将文本文件转换为 Excel 文件,而不删除数据之间的空格
- node.js - 将php restapi调用转换为节点axios
- python-3.x - Uvicorn 没有运行 sanic “before_server_start”
- sql - 从具有唯一记录的非查询中获取重复项
- python - 如何使用装饰器将两个变量传递给函数
- javascript - 如何调整内容大小以自动填充整个屏幕空间?
- mysql - 我无法使用 Nodejs 和 Express 向 MySQL 数据库添加新数据
- django - 如何通过 Django Pagnination 获得正确的转速表?
- r - 在多个变量上应用命令时缩短 case_when 语法