Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 与2数据透视表数据搜索的多对多关系_Php_Laravel_Laravel 5.2_Many To Many - Fatal编程技术网

Php 与2数据透视表数据搜索的多对多关系

Php 与2数据透视表数据搜索的多对多关系,php,laravel,laravel-5.2,many-to-many,Php,Laravel,Laravel 5.2,Many To Many,在前端,用户可以根据显示数据所需的选项选择多个资格(复选框)和技能(复选框) 例如:如何让具有资格证书的学生毕业并获得MBA和技能Laravel和PHP这里是一个关于如何做到这一点的示例(由于您的问题中缺乏细节,可能不准确,但应该给您一个想法) (我认为您最好使用多个选择框,而不是技能和资格的复选框) 假设您希望通过技能和资格搜索学生 在模型中有正确的关系方法 Skills ------- id name 1 PHP 2 Laravel Qualifications --------

在前端,用户可以根据显示数据所需的选项选择多个资格(复选框)和技能(复选框)


例如:如何让具有资格证书的学生毕业并获得MBA和技能Laravel和PHP

这里是一个关于如何做到这一点的示例(由于您的问题中缺乏细节,可能不准确,但应该给您一个想法)

(我认为您最好使用多个选择框,而不是技能和资格的复选框)

假设您希望通过技能和资格搜索学生 在模型中有正确的关系方法

Skills
-------
id  name
1   PHP
2   Laravel

Qualifications
-----------------
id  name
1   MBA
2   Graduate
3   Post Graduate

students
------------
id  name
1   John
2   Smith

 2 pivot tables

student_skills

student_id  skill_id
1           1
1           2
2           1

student_qualifications

tutor_id    qualification_id
1           2
1           2
2           2
如果传递的是ID数组而不是名称数组

  //Don't forget to import Students model at top of the controller
public function whatever(Request $request)
    {
    $data = Student::with('qualifications', 'skills');

     // assuming that the form will pass an array of skills names
     //if the form passes an array of ID's of skills it becomes easier

    if (!empty($request->skills)) {
        foreach ($request->skills as $skill) {
            $data->whereHas('skills', function ($query) use ($skill) {
                $query->where('id', $skill);
            })->get();
        }
    }

       // same goes for qualifications
    if (!empty($request->qualifications)) {
        foreach ($request->qualifications as $qualification) {
            $data->whereHas('qualifications', function ($query) use ($skill) {
                $query->where('id', $qualification);
            })->get();
        }
    }

    // execute the query now
   $data->get(); // or pagniate(10)
}
学历也是如此


我希望你能明白这一点,你可以进行分类和填充,这可能不是你需要的东西,但如果你得到了它,它会对你有很大帮助。

你需要什么样的细节@Achrafkhouadjlike,实际问题是什么?你的密码在哪里?看到它的工作感谢您的快速响应@AchrafKhouadjagreat,将此标记为答案,如果您愿意,请上传。真为你高兴。
   if (!empty($request->skills)) {
            $data->whereHas('skills', function ($query) use ($skills)                   {
                $query->whereIn('id', $skills);
            })->get();
    }