我在将这个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'
答案 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();
同样从更广泛的角度来看,我确信这可以重写为使用可能更有效的联接。