如何在 Laravel 中执行此操作,子查询在哪里

新手上路,请多包涵

如何在 Laravel 中进行此查询:

 SELECT
    `p`.`id`,
    `p`.`name`,
    `p`.`img`,
    `p`.`safe_name`,
    `p`.`sku`,
    `p`.`productstatusid`
FROM `products` p
WHERE `p`.`id` IN (
    SELECT
        `product_id`
    FROM `product_category`
    WHERE `category_id` IN ('223', '15')
)
AND `p`.`active`=1

我也可以通过加入来做到这一点,但我需要这种格式来提高性能。

原文由 Marc Buurke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 365
2 个回答

考虑这段代码:

 Products::whereIn('id', function($query){
    $query->select('paper_type_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})->get();

原文由 lukaserat 发布,翻译遵循 CC BY-SA 3.0 许可协议

您使用 DB::raw 设置子查询。

例子

DB::raw('(
    SELECT
    `product_id`
    FROM `product_category`
    WHERE `category_id` IN ('223', '15') as `product_id`
)'

原文由 Abeysinghe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题