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。
发布于 2017-02-12 14:20:35
下面是一个例子,说明你如何做到这一点(这可能是不准确的,因为你的问题缺乏细节,但它应该给你一个想法)
(我认为您最好使用Mutli-复选框,而不是技能和资格复选框)
假设您想按技能和资格搜索学生,并且您的模型中有正确的关系方法
//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数组而不是名称
if (!empty($request->skills)) {
$data->whereHas('skills', function ($query) use ($skills) {
$query->whereIn('id', $skills);
})->get();
}资格也是如此。
我希望你能明白这一点,你可以分类,这可能不是你所需要的,但如果你得到它,它会对你有很大的帮助。
https://stackoverflow.com/questions/42188323
复制相似问题