Laravel Eloquent 枢轴兴高采烈 table

Laravel Eloquent elation for pivot table

我目前正在做一个 laravel 项目,但我很难找到合适的 eloquent 关系。

我的表格和连接(应该)如下所示: Project Relations

我的模型关系是这样的:

用户

    public function team() 
{
    return $this->hasMany(Team::class, 'user_id');
}

public function evaluation() 
{
    return $this->hasMany(Evaluation::class, 'user_id');
}

团队

public function user()
{
   return $this->belongsTo(User::class);
}
public function survey()
{
    return $this->hasMany(Survey::class, 'team_id');
}

评价

public function user()
{
   return $this->belongsTo(User::class);
}

public function survey()
{
return $this->hasMany(Survey::class, 'evaluation_id');
}

调查

public function team()
{
return $this->belongsTo(Team::class);
}

public function evaluation()
{
return $this->belongsTo(Evaluation::class);
}

public function surveyresponse()
{
return $this->hasMany(SurveyResponse::class, 'survey_id');
}

调查回复

public function survey()
{
return $this->belongsTo(Survey::class);
}

public function testquestion()
{
return $this->belongsTo('App\TestQuestion');
}

这是要走的路吗?这里需要 "Has Many Through" 关系吗?或者 "Polymorphic Relationship"?

对我来说似乎是正确的,我只是没有看到 TesteQuestion 模型(你最后的关系)。

回答您的问题:

HasManyThrough 关系只是通过中间关系访问远距离关系的捷径,在您的情况下:用户有很多评价,有很多调查。通过这种关系,您可以获得来自用户的所有调查。

你的关系应该是这样的:

/** * Get all of the surveys for the user. */ public function surveys() { return $this->hasManyThrough('App\Survey', 'App\Evaluation'); } 您可以像这样访问此关系:

$user->surveys();

但是您可以通过以下方式实现相同的效果(不使用 HasManyThrough):

$user->evaluations()->surveys();

请注意,这也会 return 评估,而不仅仅是调查,它需要更多处理。

所以我 建议 如果你假装经常访问调查,你就可以建立 HasManyThrough 关系。