如何编写Laravel查询以对重复记录进行分组

时间:2016-10-22 06:39:20

标签: mysql laravel laravel-4

这是我当前查询从表corporationsjobscorp_networkscandidates获取数据。

$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查询中执行此操作。

1 个答案:

答案 0 :(得分: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');