2016-09-09 2 views
0

Я хочу создать отношения через 3 таблицы.Отношения - 3 таблицы отношений

Мои отношения - USER -> ОТВЕТ -> ВОПРОС

Ответ Модель

public function question() 
    { 
     return $this->hasMany('App\Question','id'); 
    } 

Вопрос Модель

public function answer() 
    { 
     return $this->belongsTo('App\Question','question_id'); 
    } 

пользователя Модель

public function maritalStatus() 
    { 
     return $this->belongsTo('App\Answer','marital_status'); 
    } 

Посмотреть

{{ $user->maritalStatus->question->label }} 

Ошибка

Не определено свойство: Осветить \ Database \ красноречивый \ Коллекция :: $ ярлык

Спасибо

+0

Ответ есть много вопросов, но вопрос только (принадлежит) одному вопросу? Разве это не должно быть наоборот? – tkausl

+0

Ответ имеет один вопрос. Но у quesiton много ответов. –

+0

Ваша модель показывает что-то другое. Кроме того, ваша функция 'answer' в вашей модели' Question' фактически принадлежит 'Question', а не' Ответ'. – tkausl

ответ

1

Я думаю, что вы получили отношения перепутаны.

Вот что имело бы смысл для меня: Answer belongsTo Question и Question hasMany Answer.

class Answer 
{ 
    public function question() 
    { 
     return $this->belongsTo('App\Question'); 
    } 

} 



class Question 
{ 
    public function answers() 
    { 
     return $this->hasMany('App\Answer'); 
    } 

} 

Как в вашем случае, $answer->question коллекция (ни одна модель), так как вы определили его как hasMany отношении вместо belongsTo.

Итак, если вы хотите сохранить свои отношения так, как вы их сейчас (чего я не ожидаю, так как ответ, который отвечает на многие вопросы одновременно, встречается довольно редко по сравнению с противоположным), вам нужно будет добавьте, например, ->first() к вашему {{ $user->maritalStatus->question->first()->label }}. Но в этом случае скорее назовите его questions (множественное число), то его, вероятно, более очевидным ...

+0

Спасибо. Вы мне очень помогли. –

+0

Добро пожаловать;) – jsphpl

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