首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多到多关系与2枢轴表数据搜索

多到多关系与2枢轴表数据搜索
EN

Stack Overflow用户
提问于 2017-02-12 13:47:28
回答 1查看 76关注 0票数 0
代码语言:javascript
复制
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

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

例如,如何获得有资格的研究生和MBA,以及技能,Laravel和PHP。

EN

回答 1

Stack Overflow用户

发布于 2017-02-12 14:20:35

下面是一个例子,说明你如何做到这一点(这可能是不准确的,因为你的问题缺乏细节,但它应该给你一个想法)

(我认为您最好使用Mutli-复选框,而不是技能和资格复选框)

假设您想按技能和资格搜索学生,并且您的模型中有正确的关系方法

代码语言:javascript
复制
  //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)
}

如果您传递的是一个ID数组而不是名称

代码语言:javascript
复制
   if (!empty($request->skills)) {
            $data->whereHas('skills', function ($query) use ($skills)                   {
                $query->whereIn('id', $skills);
            })->get();
    }

资格也是如此。

我希望你能明白这一点,你可以分类,这可能不是你所需要的,但如果你得到它,它会对你有很大的帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42188323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档