表查询,其中字段等于Laravel中的查询结果

表查询,其中字段等于Laravel中的查询结果,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,将此mysql查询转换为Laravel表查询时遇到一些问题: SELECT card FROM card_groups WHERE group_number = ( SELECT group_number FROM card_groups WHERE card = '1111' ) AND card <> '1111'; 也就是说:我想获取与“1111”属于同一组的所有卡号,但“1111”除外。这是到目前为止我的Laravel查询: DB::table ('card_gro

将此mysql查询转换为Laravel表查询时遇到一些问题:

SELECT card
FROM card_groups
WHERE group_number = (
    SELECT group_number FROM card_groups WHERE card = '1111'
) AND card <> '1111';
也就是说:我想获取与“1111”属于同一组的所有卡号,但“1111”除外。这是到目前为止我的Laravel查询:

DB::table ('card_groups')->where ('group_number', /* SELECT GROUP ID IN SUB QUERY */)
                         ->where ('card', '<>', '1111');
有什么想法吗?谢谢

更新 我已使用联接重写了查询,如下所示:

SELECT cg.card
FROM card_groups cg
JOIN card_groups cg2 ON cg2.group_number = cg.group_number
WHERE cg2.card = '1111' AND cg.card <> '1111'
您可能需要使用whereRaw进行此操作

$query = DB::table('card_groups')
    ->select('card')
    ->where('card', '<>', $id);
$subQuery = DB::table('card_groups')
    ->select('group_number')
    ->where('card', '=', $id);
$query->whereRaw('group_number = '.$subQuery->toSql(), $subQuery->getBindings());
return $query->get();

此外,从更广泛的角度来看,我确信可以重写此操作以使用可能更有效的联接。

请查看此处的参数分组。我想这会有帮助的。谢谢Andreas,我已经按照建议使用连接重写了我的查询