2016-10-22 10 views
1

Это мой текущий запрос, получающий данные из таблиц corporations, jobscandidates.Как написать запрос Laravel для группировки повторяющихся записей

$sqlCandSkills = DB::table('corporations') 
    ->join('jobs', 'corporations.corp_id', '=', 'jobs.corp_id') 
    ->join('corp_logos', 'corp_logos.corp_id', '=', 'corporations.corp_id') 
    ->join('candidates', 'corporations.corp_id', '=', 'candidates.corp_id') 
    ->join('corp_networks', 'corporations.corp_id', '=', 'corp_networks.participation_corp_id') 
    ->where([ 
     'corp_networks.owning_corp_id' => $this->corp->corp_id, 
     'corp_networks.status' => "Accepted" 
    ]) 
    ->orwhere([ 
     'corporations.corp_id' => $this->corp->corp_id 
    ]) 
    ->where('candidates.is_available', '=', 0)->get(); 

Мне нужно добавить запрос проверки, потому что я получаю несколько строк из одних и тех же данных из запроса.

for($i=0 ; $i<sizeof($skillsArray); $i++){ 
    $value= $skillsArray[$i]; 

    echo($value); 

    $jobDetails = DB::select(
     'SELECT * FROM jobs WHERE job_technical_requirements LIKE "%'.$value.'%" AND job_status = 1 INNER JOIN ' 
    ); 
} 

Вышеуказанный запрос дает все данные, но мне также необходимо выполнить указанные выше проверки. Я делаю этот второй запрос для сравнения массива значений с значениями csv в столбце. Теперь мне нужно добиться всего этого одним результатом. Мне нужны способы сделать это либо в sql-запросе, либо в запросе laravel.

ответ

0

вы можете использовать GroupBy

$sqlCandSkills = DB::table('corporations') 
    ->distinct() 
    ->join('candidates', 'corporations.corp_id', '=', 'candidates.corp_id') 
    ->join('corp_networks', 'corporations.corp_id', '=', 'corp_networks.participation_corp_id') 
    ->where([ 
     'corp_networks.owning_corp_id' => $this->corp->corp_id, 
     'corp_networks.status' => "Accepted" 
    ]) 
    ->orwhere([ 
     'corporations.corp_id' => $this->corp->corp_id 
    ]) 
    ->where('candidates.is_available', '=', 0) 
    ->groupBy(array(
     'corporations.corp_id', 
     'corp_networks.participation_corp_id', 
     'corp_networks.owning_corp_id' 
     )) 
    ->get('corporations.corp_id'); 

 Смежные вопросы

  • Нет связанных вопросов^_^