首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在whereHas为假的情况下加载模型?

为什么在whereHas为假的情况下加载模型?
EN

Stack Overflow用户
提问于 2021-10-19 13:52:44
回答 1查看 42关注 0票数 0

我有一个疑问:

代码语言:javascript
复制
$result = PortingItem::whereHas('porting', function ($query) {
        $query->whereIn('status', [
            Porting::STATUS_REQUESTED,
            Porting::STATUS_ACCEPTED,
            Porting::STATUS_DELAYED,
        ]);
    })->where(function ($query) use ($numbers) {
        $query->whereBetween('phone_number_start', [$numbers[0], $numbers[1]])
            ->orWhereBetween('phone_number_end', [$numbers[0], $numbers[1]]);
    })->orWhere([
        ['phone_number_start', '<=', $numbers[0]],
        ['phone_number_end', '>=', $numbers[1]],
    ])->get();

当移植关系为空时,PortingItem模型仍然返回查询结果。我不明白为什么会这样。

这是我的Porting模型关系

代码语言:javascript
复制
public function items()
{
    return $this->hasMany(PortingItem::class);
}

这是我的PortingItem模型关系:

代码语言:javascript
复制
public function porting()
{
    return $this->belongsTo(Porting::class);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 14:06:27

,您应该始终对orWhere调用进行分组,以避免在应用全局作用域时发生意外行为。

代码语言:javascript
复制
$result = PortingItem::whereHas('porting', function ($query) {
        $query->whereIn('status', [
            Porting::STATUS_REQUESTED,
            Porting::STATUS_ACCEPTED,
            Porting::STATUS_DELAYED,
        ]);
    })->where(function ($query) use ($numbers) {
        $query->where(function ($query) use ($numbers) {
            $query->whereBetween('phone_number_start', [$numbers[0], $numbers[1]])
                ->orWhereBetween('phone_number_end', [$numbers[0], $numbers[1]]);
        })->orWhere(function ($query) use ($numbers) {
            $query->where('phone_number_start', '<=', $numbers[0])
                ->where('phone_number_end', '>=', $numbers[1]);
        });
    })->get();

https://laravel.com/docs/8.x/queries#logical-grouping

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69632139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档