2015-09-17 2 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

Смежные вопросы