Comment puis-je faire cette requête dans 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
Je pourrais aussi faire cela avec une jointure, mais j'ai besoin de ce format pour les performances.
p
.active
= 1 vérification sur les tables de produits alors que votre requête l'applique à la table de ProductCategory .... non ?? ou y a-t-il quelque chose qui me manque ..?Jetez un œil à la documentation Wheres avancée pour Fluent: http://laravel.com/docs/queries#advanced-wheres
Voici un exemple de ce que vous essayez d'accomplir:
Cela produira:
la source
table()
méthode au lieu dufrom()
. Je n'ai pas eu cette situation en L3, désolé!Vous pouvez utiliser la variable en utilisant le mot-clé "use ($ category_id)"
la source
Le code suivant a fonctionné pour moi:
la source
Vous pouvez utiliser Eloquent dans différentes requêtes et rendre les choses plus faciles à comprendre et à maintenir:
puis on met tout ensemble:
Cela générera la même requête que celle que vous avez écrite dans votre question.
la source
Le script est testé dans Laravel 5.x et 6.x. La
static
fermeture peut améliorer les performances dans certains cas.génère le SQL
la source
Laravel 4.2 et au-delà, peut utiliser l'interrogation de relation d'essai: -
la source
la source
en utilisant une variable
la source
Veuillez essayer cet outil en ligne sql2builder
la source