Cómo hacer esto en Laravel, subconsulta dónde en
¿Cómo puedo hacer esta consulta en 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
También podría hacer esto con una unión, pero necesito este formato para el rendimiento.
Aceptado
Considere este código:
Products::whereIn('id', function($query){
$query->select('paper_type_id')
->from(with(new ProductCategory)->getTable())
->whereIn('category_id', ['223', '15'])
->where('active', 1);
})->get();
Eche un vistazo a la documentación de la cláusula dónde avanzada para Fluent. A continuación se muestra un ejemplo de lo que está intentando lograr:
DB::table('users')
->whereIn('id', function($query)
{
$query->select(DB::raw(1))
->from('orders')
->whereRaw('orders.user_id = users.id');
})
->get();
Esto producirá:
select * from users where id in (
select 1 from orders where orders.user_id = users.id
)