Php 返回依赖于模型中字段值的雄辩关系

Php 返回依赖于模型中字段值的雄辩关系,php,laravel,eloquent,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_ty

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

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');
}

当我有一个模型实例时,我可以很好地调用这个关系,但是当我尝试使用('paymentType')调用
时,我得到了对成员函数AddagerConstraints()的异常
调用在null上,我可以想象,由于模型还没有填充值,因此会出现您的急切加载问题。尝试使用
$this->type
检查模型的类型违背了快速加载的本质

您可以选择:

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


B)

在使用
paymentType()
关系的查询中,是否有
with()
调用?是的,我应该在问题中指出,当我有一个模型实例时,该方法工作正常。但是,当我尝试使用('paymentType)
加载关系时,会出现异常。修正了我的问题。