Wie kann ich diese Abfrage in Laravel durchführen:
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
Ich könnte dies auch mit einem Join tun, aber ich benötige dieses Format für die Leistung.
p
.active
= 1 Überprüfung der Produkttabellen, während Ihre Abfrage sie auf die Tabelle der Produktkategorie anwendet .... richtig? oder fehlt mir etwas ..?Schauen Sie sich die erweiterte Wherees-Dokumentation für Fluent an: http://laravel.com/docs/queries#advanced-wheres
Hier ist ein Beispiel dafür, was Sie erreichen möchten:
Dies wird produzieren:
quelle
table()
Methode anstelle vonfrom()
. Ich hatte diese Situation in L3 nicht, sorry!Sie können eine Variable verwenden, indem Sie das Schlüsselwort "use ($ category_id)" verwenden.
quelle
Der folgende Code hat bei mir funktioniert:
quelle
Sie können Eloquent in verschiedenen Abfragen verwenden und das Verständnis und die Verwaltung erleichtern:
und dann setzen wir alle zusammen:
Dadurch wird dieselbe Abfrage generiert, die Sie in Ihrer Frage geschrieben haben.
quelle
Das Skript wird in Laravel 5.x und 6.x getestet. Der
static
Verschluss kann in einigen Fällen die Leistung verbessern.generiert die SQL
quelle
Laravel 4.2 und höher kann versuchen, Beziehungen abzufragen: -
quelle
quelle
mit einer Variablen
quelle
Bitte versuchen Sie dieses Online-Tool sql2builder
quelle