回归雄辩关系依赖于模型中的场域价值

Ben*_*Ben 5 php laravel eloquent

假设我有一个模型,我想返回一个关系,但它取决于模型属性的值.我在我的模型中试过这个:

public function paymentType(){
    if($this->type > 1) return $this->hasOne(PaymentType::class, 'type', 'type');
    if($this->type == 1) return $this->hasOne(PaymentType::class, 'payment_type', 'pay_type');
}
Run Code Online (Sandbox Code Playgroud)

当我有一个模型的实例时,我可以称这种关系很好,但是当我尝试加载并调用时with('paymentType'),我得到了异常Call to a member function addEagerConstraints() on null

Kev*_*Lee 1

我想您出现急切加载的问题是因为模型尚未填充值。尝试检查模型的类型违背$this->type了急切加载的本质。

您的选择是:

A) 使用延迟加载,以便type在调用关系之前将其填充到模型中,或者

B)使用急切加载约束