表查询,其中字段等于Laravel中的查询结果
将此mysql查询转换为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
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,我已经按照建议使用连接重写了我的查询