laravel查询生成器,其中获取重复数据

时间:2018-11-07 11:57:11

标签: laravel-5 laravel-query-builder where-in

我目前正在尝试获取我所拥有的候选人姓名列表的候选人ID,为此,我目前正在使用以下查询,

foreach ($candidateName as $index => $row) {
    $candidateIDS = DB::table('candidates')
                   ->select('id', 'account_name')
                   ->whereIn('account_name', $candidateName)
                   ->get();
}

以上查询查找我通过candidateName数组发送的候选名称,并按预期输出数据。

我的问题是如何通过查询获取重复数据。因为candidateName数组具有重复的名称记录,并且我需要查询输出具有与candidateName数组相同的候选ID和名称。

示例candidateName数组

$candidateName = [name1,name2,name3,name3,name4,name5]

预期产量

$candidateIDS = [{id:1,account_name:"name1"},
                 {id:2,account_name:"name2"},
                 {id:3,account_name:"name3"},
                 {id:3,account_name:"name3"},
                 {id:4,account_name:"name4"},
                 {id:5,account_name:"name5"},];

1 个答案:

答案 0 :(得分:0)

Return all for where IN (1,2,3,3,3,1) clause with duplicates in the IN condition的Laravel实现:

DB::table('candidates')
    ->select('candidates.id', 'candidates.account_name')
    ->joinSub(function($query) use($candidateNames) {
        foreach($candidateNames as $i => $candidateName) {
            if($i == 0) {
                $query->selectRaw('? as account_name', [$candidateName]);
            } else {
                $query->unionAll(DB::query()->selectRaw('? as account_name', [$candidateName]));
            }
        }
    }, 'where_in', 'where_in.account_name', 'candidates.account_name')
    ->get();
相关问题