2016-09-09 5 views
0

3 개의 테이블을 통해 관계를 만들고 싶습니다.관계 - 3 테이블 관계

내 관계 - 사용자 -> 답변 -> 질문

대답 모델

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

감사 웅변 \ 컬렉션 \ \ 데이터베이스 :: $ 라벨을 조명.

내게 맞는 내용은 다음과 같습니다. Answer belongsTo QuestionQuestion hasMany Answer. 당신이 대신 belongsTohasMany 관계로 정의하기 때문에

귀하의 경우와 같이
class Answer 
{ 
    public function question() 
    { 
     return $this->belongsTo('App\Question'); 
    } 

} 



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

} 

$answer->question 콜렉션 (하지 단일 모델)입니다.

만약 당신이 지금 당신이 가진 방식대로 관계를 유지하고 싶다면 (한 번에 많은 질문에 답하는 대답이 그 반대의 경우에 비해 매우 드물기 때문에 나는 기대하지 않습니다.) 예를 들어 ->first(){{ $user->maritalStatus->question->first()->label }}에 추가하십시오. 그러나 그 경우에는 questions (복수형)이라고 부르면 더 명확 해집니다.

+0

감사합니다. 니가 나에게 많은 도움이되었다. –

+0

당신이 가장 환영합니다;) – jsphpl