我想通过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 }}
错误
未定义的属性:Illuminate \ Database \ Eloquent \ Collection :: $ label
谢谢
答案 0 :(得分: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
(复数),那么它可能更明显......