2015-12-30 102 views
0

我的员工名单这个EMPLOYEE表FIND_IN_SET两个字符串

+-----+---------------+-------------+ 
| ID |EMPLOYEE_ID | SKILLS  | 
+-----+---------------+-------------+ 
| 1 |  1  | 3,4  | 
+-----+---------------+-------------+ 
| 2 |  2  | 3,5,2  | 
+-----+---------------+-------------+ 
| 3 |  3  | 1,5  | 
+-----+---------------+-------------+ 

和表POSTED_JOB上市工作

+-----+---------------+-------------+ 
| ID |POSTED_JOB_ID | JOB_SKILLS | 
+-----+---------------+-------------+ 
| 1 |  1  | 1,2,3  | 
+-----+---------------+-------------+ 
| 2 |  2  | 3,4  | 
+-----+---------------+-------------+ 
| 3 |  3  | 5,4  | 
+-----+---------------+-------------+ 
| 4 |  4  | 5,6  | 
+-----+---------------+-------------+ 

我怎样才能得到所有发布的工作对应于员工的技能与技巧laravel查询。

例如,对于与EMPLOYEE_ID 1名员工,该职位将是1,2和3。

我试着用FIND_IN_SET但这里都是列表。 DB ::原始( “FIND_IN_SET(EMPLOYEE.SKILLS,POSTED_JOB.JOB_SKILLS)”),DB ::原始( ''),DB ::原始( ''))

+0

建议您规范化数据 – amdixon

+0

@FirstOne用户想看到他所提出类似的技能作业 – tyro

回答

1
$skills = 'select the employee skills'; 
$skl_arr = explode(',',$skills); 
$skl_length = count($skl_arr); 

/* *查询/

$rows->orwhere(DB::raw("find_in_set('$skl_arr[0]','post_job.skills')")); 

for ($i=1; $i < $skl_length ; $i++) { 
       $rows->$join->on(DB::raw("find_in_set('$skl_arr[$i]','post_job.skills')",DB::raw(''),DB::raw(''))); 

} 
0

你可以试试这个在加入

DB::table('POSTED_JOB')->leftJoin('EMPLOYEE', function($join){ 
    $join->on(DB::raw("find_in_set(POSTED_JOB.JOB_SKILLSmEMPLOYEE.SKILLS)")); 
});