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

问题描述 投票:0回答:2

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

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

有人对这个解决方案有所了解吗?

php mysql laravel
2个回答
0
投票

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

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


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.*'); 
      
      }
© www.soinside.com 2019 - 2024. All rights reserved.