关系 - 3表关系

时间:2016-09-09 05:43:50

标签: laravel laravel-5.2

我想通过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

谢谢

1 个答案:

答案 0 :(得分:1)

我认为你们的关系互换了。

以下是对我有用的内容: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');
    }

}

与您的情况一样,$answer->question是一个集合(不是单个模型),因为您将其定义为hasMany关系而非belongsTo

所以,如果你想保持你的关系你现在的方式(我不认为,作为一个答案,一次回答很多问题是相反的相反),你需要添加例如->first(){{ $user->maritalStatus->question->first()->label }}。但在这种情况下,而不是称之为questions(复数),那么它可能更明显......