php - Laravel Eloquent 与 whereHas 的关系
问题描述
我正在尝试在关系中搜索,我的查询是
$records = Store::orderBy($columnName,$columnSortOrder)
->where('store_id', 'like', '%' .$searchValue . '%')
->whereHas('customer', function ($query) use ($searchValue) {
$query->where('name', 'like', '%' .$searchValue . '%');
})
->select('*')
->skip($start)
->take($rowperpage)
->get();
并返回一个查询
SELECT * FROM `store` WHERE `store_id` LIKE '%San%' AND EXISTS ( SELECT * FROM `customers`
WHERE `store`.`customer_id` = `customers`.`id` AND `name` LIKE '%San%') ORDER BY
`inv_id` ASC LIMIT 10 OFFSET 0
我想要的是或有关系
SELECT * FROM `store` WHERE `store_id` LIKE '%San%' OR EXISTS ( SELECT * FROM `customers`
WHERE `store`.`customer_id` = `customers`.`id` AND `name` LIKE '%San%') ORDER BY
`inv_id` ASC LIMIT 10 OFFSET 0
解决方案
而不是使用whereHas
使用orWhereHas
$records = Store::orderBy($columnName,$columnSortOrder)
->where('store_id', 'like', '%' .$searchValue . '%')
->orWhereHas('customer', function ($query) use ($searchValue) {
$query->where('name', 'like', '%' .$searchValue . '%');
})
->select('*')
->skip($start)
->take($rowperpage)
->get();
推荐阅读
- r - 日期问题(错误:'from' 的长度必须为 1)
- c# - UNO WASM 应用程序在发布到本地文件夹后打开时卡在启动画面上
- python - 如果 Windows 版本低于目标,Python 脚本终止
- java - 使用 Java 进行 Swift AES 加密
- java - 如何使用 java 项目修复 Selenium 的 Edge 和 chrome 驱动程序错误?
- c# - 如何使用模拟的 Uri 进行单元测试
- sql-server - 如果它们在日期范围sql之间,则求和值
- sql - SQL查询检查ID是否是另一个表的一部分
- reactjs - eslint错误时如何防止无法在CRA上编译
- ruby-on-rails - 延迟发送电子邮件