Php 拉威尔从多对多关系中获得关系
我有三种型号:Php 拉威尔从多对多关系中获得关系,php,laravel,relationship,Php,Laravel,Relationship,我有三种型号:User、Company和Vacancie 这些模型具有以下关系: 用户多对多公司 公司一对多Vacancie 我如何才能获得所有VacancieaUser访问权限 我已经找到了答案,但是auth()->user()->with('companys.expansions')->get()返回我的数据库的所有用户。您可以执行以下操作: $userId = $request->user_id; $vacancies = Vacancie::whereHas('companies'
User
、Company
和Vacancie
这些模型具有以下关系:
用户多对多
公司
公司一对多
Vacancie
我如何才能获得所有Vacancie
aUser
访问权限
我已经找到了答案,但是
auth()->user()->with('companys.expansions')->get()代码>返回我的数据库的所有用户。您可以执行以下操作:
$userId = $request->user_id;
$vacancies = Vacancie::whereHas('companies', function ($q) use ($userId){
$q->whereHas('users', function($q1) use ($userId) {
$q1->where('users.id', userId);
});
})->get();
在这段代码中,我认为您在vacance
中有companys()
关系,在Company
中有users()
关系
这将与您现在所做的相反。当您在用户模型中调用get()
时,您将获得已加载关系的所有用户(with()
)。在用户
模型上创建一个空缺
关系,如下所示:
//inside the User model
public function vacancies()
{
$vacancies= new Illuminate\Database\Eloquent\Collection;
foreach($this->companies as $company)
{
$vacancies = $vacancies->merge($company->vacancies->get());
}
return $vacancies->unique();
}
然后,您可以使用('空缺')->get()执行auth()->user()->。未经测试,但总体思路是正确的。-试试这一个,auth()->user()->has('companys.dispositions')->with('companys.dispositions')->get();-您可以使用以下命令对关系执行更复杂的逻辑:whereHas('relation',function($query){…})…如何获取用户?此代码在api中,我使用$request->user()
获取用户。我无法访问函数中的$request
变量我使用$request->user\u id
编辑了答案。要在内部函数中使用变量,必须调用use($variable)
。谢谢!那使用($variable)
我不知道!我很高兴这有帮助!:)