在我解释我想要做什么之前,可能值得先提及以下信息。
我有3张桌子: -用户 -空缺 - user_vacancy
空缺可以有一个所有者,该所有者由空缺表上的外键user_id指示。
许多其他用户可以是团队成员,可以使用数据透视表user_vacancy分配给同一空缺
我正在尝试通过空缺模型在数据表中列出一个用户的所有空缺,无论他们是空缺的所有者还是团队成员,我的代码如下所示:
空缺控制器.php:
public function get_user_vacancies() {
$user = User::find(auth()->id());
$vacancies = Vacancy::with(['team_members' => function($q) use ($user) {
$q->where('user_id', $user->id);
}])->where('user_id', $user->id);
$dataTables = Datatables::of($vacancies);
$dataTables->make(true);
}
空缺.php:
public function team_members()
{
return $this->belongsToMany('AppModelsAccessUserUser')->withPivot('id', 'created_at', 'updated_at');
}
用户.php:
public function team_vacancies()
{
return $this->belongsToMany('AppVacancy')->withPivot('id', 'created_at', 'updated_at');
}
我知道我显然做错了什么,以便将"团队成员空缺"与"所有者空缺"结合起来,但我不太确定如何做对。
我希望有人可以帮助我或为我指出正确的方向。
您应该在模型中为team_members
方法添加关联表的名称,如下所示:
public function team_vacancies()
{
return $this->belongsToMany('AppVacancy', 'user_vacancy')->withPivot('id', 'created_at', 'updated_at');
}
通过在User.php
内部vacancies
和在Vacancy.php
内部teams
来重命名您的方法会很好