关于这个问题,我已经搜索了SO,但我似乎无法找到导致我的代码不返回任何结果的原因。我的问题是,如果查询filter_job_title,我不会得到任何结果尽管如果我使用 - > toSql()生成的SQL代码并在phpmyadmin中运行它,我确实看到了正确的结果。我需要你的眼睛才能看到我的代码出了什么问题:
$resumes = \App\Resume::select(\DB::raw("resumes.*, MATCH (resumes.job_title, resumes.career_summary, resumes.career_awards_and_achievements, resumes.school_or_institution) AGAINST ('{$k}' IN BOOLEAN MODE) AS relevance_1, MATCH (resume_section_experiences.exp_job_title, resume_section_experiences.exp_company, resume_section_experiences.exp_job_description) AGAINST ('{$k}' IN BOOLEAN MODE) AS relevance_2"))
->leftJoin('resume_section_experiences', 'resumes.user_id', '=', 'resume_section_experiences.user_id')
->leftJoin('users', 'users.id', '=', 'resumes.user_id')
->leftJoin('resume_section_languages', 'resume_section_languages.user_id', '=', 'resumes.user_id')
->leftJoin('resume_job_disciplines', 'resume_job_disciplines.user_id', '=', 'resumes.user_id')
->leftJoin('resume_job_functions', 'resume_job_functions.user_id', '=', 'resumes.user_id')
->whereRaw("(MATCH (resumes.job_title, resumes.career_summary, resumes.career_awards_and_achievements, resumes.school_or_institution) AGAINST ('{$k}' IN BOOLEAN MODE) OR MATCH (resume_section_experiences.exp_job_title, resume_section_experiences.exp_company, resume_section_experiences.exp_job_description) AGAINST ('{$k}' IN BOOLEAN MODE)) AND users.active = 1 AND users.privacy_level = 0", ['r1' => $k, 'r2' => $k])
->when(!empty($filter['filter_job_title']), function($query) use ($filter) {
return $query->whereRaw('resume_section_experiences.exp_job_title LIKE "%?%"', $filter['filter_job_title']);
})
->groupBy("resumes.id")
->havingRaw('(relevance_1 + relevance_2) > 0')
->orderByRaw("(relevance_1 + relevance_2) DESC, resumes.job_title ASC")
->simplePaginate(15); //toSql();//simplePaginate(15);
这是使用 - > toSql()生成的SQL代码,格式化为更容易查看:
select resumes.*,
MATCH (resumes.job_title, resumes.career_summary, resumes.career_awards_and_achievements, resumes.school_or_institution) AGAINST ('engineer' IN BOOLEAN MODE) AS relevance_1,
MATCH (resume_section_experiences.exp_job_title, resume_section_experiences.exp_company, resume_section_experiences.exp_job_description) AGAINST ('engineer' IN BOOLEAN MODE) AS relevance_2
from `resumes`
left join `resume_section_experiences` on `resumes`.`user_id` = `resume_section_experiences`.`user_id`
left join `users` on `users`.`id` = `resumes`.`user_id`
left join `resume_section_languages` on `resume_section_languages`.`user_id` = `resumes`.`user_id`
left join `resume_job_disciplines` on `resume_job_disciplines`.`user_id` = `resumes`.`user_id`
left join `resume_job_functions` on `resume_job_functions`.`user_id` = `resumes`.`user_id`
where (
MATCH (
resumes.job_title, resumes.career_summary, resumes.career_awards_and_achievements, resumes.school_or_institution)
AGAINST ('engineer' IN BOOLEAN MODE
)
OR MATCH (
resume_section_experiences.exp_job_title, resume_section_experiences.exp_company, resume_section_experiences.exp_job_description)
AGAINST ('engineer' IN BOOLEAN MODE)
)
AND users.active = 1
AND users.privacy_level = 0
AND resume_section_experiences.exp_job_title LIKE "%Web Developer%"
group by `resumes`.`id`
having (relevance_1 + relevance_2) > 0
order by (relevance_1 + relevance_2) DESC, resumes.job_title ASC