2015-09-17 149 views
4

假設我有一個模型,並且我想返回一個關係,但它取決於模型屬性的值。我在我的模型試過這樣:返回依賴於模型中字段值的關聯關係

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

當我有模型的實例,我可以然而,當我嘗試渴望負載調用這個關係很好,和呼叫with('paymentType'),我得到的異常Call to a member function addEagerConstraints() on null

+0

你有'用( )在使用'paymentType()'關係的查詢中調用某處? –

+0

是的,我應該在我的問題中注意到,當我有一個模型的實例時,該方法工作正常。但是,當我嘗試用('paymentType)'加載關係' - >時,我得到了異常。 已修復我的問題。 – Ben

回答

1

我會想象你的問題與急切的加載出現,因爲模型尚未填充值。試圖檢查與$this->type模型的類型違反急切加載的性質。

你的選擇是:

A),使type在模型中填入您調用關係之前使用延遲加載,或

B)Use eager loading constraints