Php 如何获取指定了所有关系数据的数据
我正在用laravel构建应用程序 我要做的是获取具有搜索条件中指定的所有资格的用户数据,并显示用户列表 这是我的模型结构 用户: 资格:Php 如何获取指定了所有关系数据的数据,php,mysql,laravel,Php,Mysql,Laravel,我正在用laravel构建应用程序 我要做的是获取具有搜索条件中指定的所有资格的用户数据,并显示用户列表 这是我的模型结构 用户: 资格: id name 11 A 12 B 13 C 用户资格: qualification_id user_id 11 1 11 2 12 2 13 2 如果设置搜索条件“资格11,12,13” John只有11个
id name
11 A
12 B
13 C
用户资格:
qualification_id user_id
11 1
11 2
12 2
13 2
如果设置搜索条件“资格11,12,13”
John只有11个->未列出
杰克具备所列的所有资格
我想用laravel查询生成器来实现这一点,有什么办法吗
User.php
public function qualifications()
{
return $this->belongsToMany('App\Qualification');
}
控制器
$query = App\User::query();
// other condition
// ....
// the case listed if one condition is matched
// but, this is not what I want to do
$query->whereHas(
'qualifications',
function ($query) use ($conditions) { //$conditions = [11,12,13]
$query->whereIn('qualifications.id', $qualifications);
}
);
在您的用户模型中:
public function qualifications()
{
return $this->belongsToMany(
Qualification::class,
'qualification_user',
'user_id',
'qualification_id'
);
}
然后在控制器中,假设您获得了作为数组的资格ID:
$query = User::query();
foreach($qualificationIds as $id) {
$query->whereHas('qualifications', function ($q) use ($id) {
$q->where('id', $id);
});
}
$query->get();
在您的用户模型中:
public function qualifications()
{
return $this->belongsToMany(
Qualification::class,
'qualification_user',
'user_id',
'qualification_id'
);
}
然后在控制器中,假设您获得了作为数组的资格ID:
$query = User::query();
foreach($qualificationIds as $id) {
$query->whereHas('qualifications', function ($q) use ($id) {
$q->where('id', $id);
});
}
$query->get();
你能告诉我们你的疑问吗?@Saromase谢谢你的回复。我已经更新了我的帖子。代码不是我想做的。对不起,我的英语很差。您的查询返回了一些内容,或者您有错误?没问题,我的英语也不是最好的@Yoshihide@Saromase使用此代码,将列出仅具有资格11的用户。我想做的是只列出具有所有资格11、12、13的用户。使用此代码,将列出具有这些资格之一的用户。查询显示,return me用户的资格是11、12或13。您能向我们展示您的查询吗?@Saromase感谢您的回复。我已经更新了我的帖子。代码不是我想做的。对不起,我的英语很差。您的查询返回了一些内容,或者您有错误?没问题,我的英语也不是最好的@Yoshihide@Saromase使用此代码,将列出仅具有资格11的用户。我想做的是只列出具有所有资格11、12、13的用户。使用此代码,将列出具有这些资格之一的用户。查询表明,returnme用户的资格是11、12或13。