如何在laravel中使用具有多个列的相同类别ID?

时间:2017-12-26 10:50:33

标签: php mysql laravel

我有求职者表和职称表, 在职称表中

id job_title_key description
1   001              sales 
2   002              programmer

并在求职者表中

id jobseeker_name desire_position_1 desire_position_2
1   Sam               001                        002
2   Smith             002                        002

当我查询使用范围过滤

public function scopeSearch($query, $request) { 
    if($request->desire_position_1 != '') {
        $query->join('job_titles','jobseekers.desire_position_1','=','job_titles.job_title_key');
      }  

      if($request->desire_position_2!='') {
          $query->join('job_titles','jobseekers.desire_position_2','=','job_titles.job_title_key');
      }  
      
    if ($request->desire_position_1!='') {
        $exp_2 = explode(',', $request->desire_position_1);    
        $query->where('job_titles.description',$exp_2);
    }

    if ($request->desire_position_2!='') {
        $exp_3= explode(',', $request->desire_position_2);    
        $query->where('job_titles.description',$exp_3);
    }
}

显示错误,如下图enter image description here

任何人都有这个解决方案的想法吗?

2 个答案:

答案 0 :(得分:0)

您使用相同的别名加入表格两次:$query->join('job_titles', ...)

使用不同的别名,它应该有用。

答案 1 :(得分:0)

我解决了以下查询发布的问题,

  public function scopeSearch($query, $request)
    { 
    if($request->desire_position_1!=''){
        $query->join('job_titles','jobseekers.desire_position_1','=','job_titles.job_title_key');
      }  
      if($request->desire_position_2!=''){
          $query->join('job_titles as job_titles_ds2','jobseekers.desire_position_2','=','job_titles.job_title_key');
      }  
      
       if ($request->desire_position_1!='') {
        $exp_2 = explode(',', $request->desire_position_1);    
       $query->where('job_titles.description',$exp_2);
      }    
      if ($request->desire_position_2!='') {
        $exp_3= explode(',', $request->desire_position_2);    
      $query->where('job_titles_ds2.description',$exp_3);
      }    
      return $query->select('jobseekers.*'); 
      
      }