Unterabfrage mit WHERE IN in Laravel
In Laravel können Sie komplexe Abfragen mithilfe von Unterabfragen durchführen. Ein häufiger Anwendungsfall ist eine Unterabfrage mit einer WHERE IN-Klausel. Dieser Artikel zeigt, wie Sie diesen Abfragetyp effektiv implementieren.
Betrachten Sie die folgende SQL-Abfrage:
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
Mit dem Eloquent ORM von Laravel können Sie diese Abfrage mit dem folgenden Code erreichen:
Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); }) ->get();
In diesem Beispiel erstellen wir zunächst eine Abfrage für das Modell „Produkte“ („Products::whereIn(...)“). Die „whereIn“-Klausel gibt an, dass wir die „Produkte“ basierend auf dem Feld „id“ filtern möchten, die in den von der Unterabfrage zurückgegebenen Ergebnissen enthalten sein sollen.
Die Unterabfrage selbst wird mithilfe einer anonymen Funktion definiert ('$query => ...'). Diese Unterabfrage wählt das Feld „paper_type_id“ aus der Tabelle „product_category“ aus, von dem angenommen wird, dass es über eine Beziehung mit dem Modell „ProductCategory“ verfügbar ist. Der Tabellenname wird mit der Methode „with(...)->getTable()“ abgerufen.
Innerhalb der Unterabfrage fügen wir Bedingungen hinzu, um Ergebnisse basierend auf dem Feld „category_id“ zu filtern und sicherzustellen, dass die Das Feld „aktiv“ ist auf 1 gesetzt. Diese Bedingungen helfen dabei, die Produktkategorien einzugrenzen, die in die Endergebnisse einbezogen werden sollen.
Mit diesem Ansatz können Sie Produkte, die die gewünschten Kriterien erfüllen, effizient abrufen, ohne dass Sie eine Leistung erbringen müssen ein teurer Beitritt.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine Unterabfrage mit der WHERE IN-Klausel in Laravel Eloquent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!