Laravel 中的子查询 WHERE IN 子句
在 Laravel 中,创建一个检索子查询中包含 ID 字段的数据的查询可以是有效地实现了。虽然 JOIN 操作也足够了,但本文重点关注通过在 WHERE IN 子句中使用子查询来优化性能。
考虑以下查询:
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
在 Laravel 中复制此查询,利用以下代码:
Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); }) ->get();
通过在 WHERE IN 子句中合并子查询,此语句有效地执行所需的搜索和检索操作。这种方法对于性能敏感的应用程序特别有益,其中最小化数据库调用至关重要。
以上是如何在 WHERE IN 子句中使用子查询来优化 Laravel 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!