2016-09-09 9 views
0

私は3つのテーブルのを通じて関係を作成します。関係 - 3つのテーブルのリレーション

私の関係 - USER - > ANSWER - > QUESTION

答えモデル

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 }} 

エラー

未定義のプロパティ:

は、私はあなたが交換関係を持って考えるあなたに

+0

答えは多くの質問がありますが、質問は(所属する)だけで、単一の答えを持っていますか?それは別の方法ではありませんか? – tkausl

+0

答えは、単一の質問があります。しかし、quesitonには多くの答えがあります。 –

+0

あなたのモデルは何か異なったものを見せています。また、あなたの 'Question'モデルで、あなたの' answer'機能は、実際には 'Question'に、ではない' Answer'に属します。 – tkausl

答えて

1

ありがとう雄弁\コレクション\ \データベース:: $ labelを照らします。ここで

は、私には理にかなって何:Answer belongsTo QuestionQuestion hasMany Answer。あなたの場合のように

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

} 



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

} 

あなたの代わりにbelongsTohasMany関係としてそれを定義しているため、$answer->questionコレクション(ない単一のモデル)です。

あなたの関係を今のままにしておきたいなら(一度に多くの質問に答える答えが反対の場合は非常に稀です)、あなたはあなたの{{ $user->maritalStatus->question->first()->label }}に例えば->first()を追加します。しかし、その場合には、むしろ(複数)questionsそれを呼び出す、そのおそらくより明白...

+0

ありがとうございます。あなたは私をたくさん助けました。 –

+0

大歓迎です;) – jsphpl

関連する問題