Php 如何获取指定了所有关系数据的数据

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个

我正在用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个->未列出

杰克具备所列的所有资格

我想用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。