【发布时间】:2021-03-28 15:14:50
【问题描述】:
我正在制作 laravel 项目。 需要合并两个复杂的 eloquent 查询,而不是查询结果。 有没有办法合并两个查询?
$query = DeviceReport::query();
$query_setting_null = $query;
$query_not_null = $query;
$query_setting_null->where(function ($q) {
$q->whereNotNull('device_setting_id');
});
if ( $company_id ) {
$query_setting_null->whereHas('deviceSetting', function ($q) use ($company_id) {
$q->where('company_id', $company_id);
});
}
........
$query_not_null->where(function ($q) {
$q->whereNull('device_setting_id');
});
if ( $company_id ) {
$query_not_null->whereHas('deviceAssignment', function ($q) use ($company_id) {
$q->where('company_id', $company_id);
});
}
........
$query = $query_not_null->merge($query_setting_null);
return $query;
我的代码看起来有些脏,抱歉。 要点如下:
$query_setting_null->where(function ($q) {
$q->whereNotNull('device_setting_id');
});
.........
$query_not_null->where(function ($q) {
$q->whereNull('device_setting_id');
});
.........
device_setting_id 的值取决于查询后;
【问题讨论】:
-
添加你的代码,你已经尝试过。
-
谢谢你,parth。我很快就会添加我的代码。
-
parth,是否要合并两个查询?
-
但是 whereNull 和 whereNotNull 两个基本反作用力,你可以把它们排除在外吗?