Laravel - 没有从Eloquent查询获得结果,但是 - > toSql()获得结果

时间:2017-12-06 06:01:28

标签: laravel-5.4 laravel-eloquent

关于这个问题,我已经搜索了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

0 个答案:

没有答案
相关问题