Laravel表格搜索包括数据透视表结果



在我解释我想要做什么之前,可能值得先提及以下信息。

我有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来重命名您的方法会很好

最新更新