Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel以雄辩的口才进行多对多选择_Php_Mysql_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel以雄辩的口才进行多对多选择

Php Laravel以雄辩的口才进行多对多选择,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我有两个表,用户和技能,以及它们之间的多对多关系。Pivot table skill_用户也有列“level”-此用户知道此技能的级别 在用户模型中,我有: public function skills(){ return $this->belongsToMany('Skill')->withPivot('level'); } 在技能模式方面: public function users(){ return $this->belongsToMany('User

我有两个表,用户和技能,以及它们之间的多对多关系。Pivot table skill_用户也有列“level”-此用户知道此技能的级别

在用户模型中,我有:

public function skills(){
    return $this->belongsToMany('Skill')->withPivot('level');
}
在技能模式方面:

public function users(){
    return $this->belongsToMany('User');
}
现在,我需要运行一个查询,该查询将返回如下内容:

“选择所有拥有skill\u id\u 1>40和&skill\u id\u 2>55和&skill\u id\u 3>67的用户”

其中,技能ID是不同的技能,返回的每个用户都应具有所需级别的给定技能

我尽可能多地搜索了Laravel文档和stackoverflow,但没有找到解决方案。任何帮助都将不胜感激,谢谢

你需要的是。多个

$users = User::whereHas('skills', function($q){
    $q->where('skill_id', 1);
    $q->where('level', '>', 44);
})->whereHas('skills', function($q){
    $q->where('skill_id', 2);
    $q->where('level', '>', 55);
})->whereHas('skills', function($q){
    $q->where('skill_id', 3);
    $q->where('level', '>', 67);
})->get();
我假设这些值是动态的,所以这应该会简化很多:

$requirements = array('1' => 40, '2' => 55, '3' => 67);

$users = User::query();
foreach($requirements as $id => $value){
    $users->whereHas('skills', function($q) use ($id, $value){
        $q->where('skill_id', $id);
        $q->where('level', '>', $value);
    });
}
$users = $users->get();

你应该解释得更清楚些。您有哪些表格以及如何获得技能id 1。目前还不太清楚skill_id_1和skill_id_2只是变量,会有实际的id,例如:“选择所有拥有php(id=1)>40&&mysql(id=2)>55的用户”