首页 > 解决方案 > 关系上雄辩的“哪里”返回错误的模型

问题描述

我的模型“雇主”上有这种方法:


    public function job_offers() {
        return $this->hasMany('App\JobOffer');
    }

    public function shared_job_offers() {
        return $this->job_offers()->where(function ($query) {
            $query->where('subscription', 3)->where('disable_share', false);
        })->orWhere(function ($query) {
            $query->where('subscription', '!=', 3)->where('manual_share', true);
        });
    }

我认为它可以正常工作,但它最终给我的模型甚至与我的模型无关。就像,模型的 id 是 37,它给了我所有模型的关系(比如 id 6)。

知道为什么会发生这种情况吗?

标签: phplaraveleloquent

解决方案


我认为由于没有在同一个呼叫中对 where 和 orWhere 进行分组,您遇到了意外的行为。这行得通吗?

public function shared_job_offers() {
    return $this->job_offers()->where(function ($query) {
        $query->where([
            ['subscription', '=', 3],
            ['disable_share', '=', false]
        ])->orWhere([
            ['subscription', '!=', 3],
            ['manual_share', '=', true]
        ]);
    });
}

推荐阅读