Laravel 5 hasMany关系返回不正确的关系

时间:2019-09-01 21:59:51

标签: laravel laravel-5 eloquent

我有一个Yard模型和Treatment模型,我正在使用以下hasMany关系返回当前处于活动状态的治疗方法:

['we will pray and hope for the best',
 'though it may not make landfall all week if it follows that track',
 'heavy rains capable of producing life threatening flash floods are possible']

由于某种原因,当我添加-> orWhere('completed',false)时,查询将返回所有处理方式,而不仅仅是与特定码相关的处理方式。我在这里做什么错了?

1 个答案:

答案 0 :(得分:2)

如果不检查生成的SQL,很难确切说明正在发生什么。

无论何时使用此代码,都可以在末尾链接一个toSql()来查看查询的样子(在使用get()的地方使用此代码)。或者,您可以启用查询日志以查看正在查询的内容。

鉴于这些症状,很可能orWhere()否定了用于过滤模型的条件。 尝试将orWhere()嵌套在当前where()语句中:

public function activeTreatments() {
    return $this->hasMany('App\Models\Treatment')
    ->where(function ($q) {
        $q->where(function($q), {
            $q->where('expires_at','>=', Carbon::now('Pacific/Auckland'))
                ->where('completed_at','>', Carbon::now('Pacific/Auckland'));
        })->orWhere('completed',false);
    });
}