Laravel 中带有 'WHERE IN' 子句的子查询
在 Laravel 中,在 'WHERE IN' 子句中创建子查询是一种高效的方式根据相关表中的数据过滤结果的方法。让我们看一个特定的场景:
您的任务是根据类别获取产品。查询应包含 ID、名称和状态等列,并且产品应属于 ID 为“223”或“15”的特定类别。
原始查询:
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();
解释:
'whereIn' 函数将闭包作为参数,允许您定义其中的子查询。
使用闭包的好处:
以上是如何在 Laravel 中高效地使用带有'WHERE IN”的子查询来过滤数据?的详细内容。更多信息请关注PHP中文网其他相关文章!