猿问

如何在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

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


慕沐林林
浏览 1925回答 3
3回答

千万里不及你

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

不负相思意

您可以使用关键字“use($ category_id)”来使用变量$category_id = array('223','15');Products::whereIn('id', function($query) use ($category_id){   $query->select('paper_type_id')     ->from(with(new ProductCategory)->getTable())     ->whereIn('category_id', $category_id )     ->where('active', 1);})->get();
随时随地看视频慕课网APP
我要回答