如何在laravel中合并两个雄辩的查询? [英] How can I merge two eloquent queries in laravel?

查看:55
本文介绍了如何在laravel中合并两个雄辩的查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做laravel项目.需要合并两个复杂的口才查询,而不是查询结果.有什么办法可以合并两个查询?

I am making laravel project. There is need to merge two complex eloquent queries, not query result. Is there any way to merge two queries?

    $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;

抱歉,我的代码有些麻烦.要点如下:

My code looks some diry, sorry. The main point is follows:

 $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的值取决于查询之后;

The value of device_setting_id depends after queries;

推荐答案

我不完全理解您要尝试的内容,但是合并 whereNull whereNotNull 的查询就像这个:

I don't completely understand what you are trying but merging queries of whereNull and whereNotNull is like this:

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

不确定这是否是您想要的.让我知道是否有帮助.

Not sure if this is what you want. Let me know if it helps.

这篇关于如何在laravel中合并两个雄辩的查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆