Heim > Backend-Entwicklung > PHP-Tutorial > Wie implementiert man eine Unterabfrage mit der WHERE IN-Klausel in Laravel Eloquent?

Wie implementiert man eine Unterabfrage mit der WHERE IN-Klausel in Laravel Eloquent?

Barbara Streisand
Freigeben: 2024-12-06 20:45:16
Original
735 Leute haben es durchsucht

How to Implement a Subquery with WHERE IN Clause in Laravel Eloquent?

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage