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 关系。
我目前正在做一个 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 关系。