【问题标题】:How can I merge two eloquent queries in laravel?如何在 laravel 中合并两个雄辩的查询?
【发布时间】: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 两个基本反作用力,你可以把它们排除在外吗?

标签: laravel eloquent


【解决方案1】:

我不完全理解您在尝试什么,但合并 whereNullwhereNotNull 的查询是这样的:

$query_merged->where(function ($q) {
    $q->whereNotNull('device_setting_id');
})->orWhere(function ($q) {
    $q->whereNull('device_setting_id');
});

不确定这是否是您想要的。如果有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2018-01-26
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多