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

时间:2014-06-13 02:41:48

标签: 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_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'

1 个答案:

答案 0 :(得分:0)

您可能需要使用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();

同样从更广泛的角度来看,我确信这可以重写为使用可能更有效的联接。