2015-12-30 3 views
0

У меня есть этот сотрудник таблицы списка сотрудников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)")); 
}); 
Смежные вопросы