¿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 combinación, pero necesito este formato para el rendimiento.
p
.active
= 1 verificación en las tablas de productos mientras que su consulta la aplica a la tabla de ProductCategory ... ¿verdad? o hay algo que me falta ..?Eche un vistazo a la documentación avanzada de wheres para Fluent: http://laravel.com/docs/queries#advanced-wheres
Aquí hay un ejemplo de lo que está tratando de lograr:
Esto producirá:
fuente
table()
método en lugar defrom()
. No he tenido esa situación en L3, ¡lo siento!Puede usar la variable usando la palabra clave "use ($ category_id)"
fuente
El siguiente código funcionó para mí:
fuente
Puedes usar Eloquent en diferentes consultas y hacer las cosas más fáciles de entender y mantener:
y luego juntamos todo:
Esto generará la misma consulta que escribió en su pregunta.
fuente
El script se prueba en Laravel 5.xy 6.x. El
static
cierre puede mejorar el rendimiento en algunos casos.genera el SQL
fuente
Laravel 4.2 y más allá, puede usar la consulta de relación de prueba: -
fuente
fuente
usando una variable
fuente
Pruebe esta herramienta en línea sql2builder
fuente