Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Unterabfragen mit „WHERE IN' in Laravel effizient zum Filtern von Daten verwenden?

Wie kann ich Unterabfragen mit „WHERE IN' in Laravel effizient zum Filtern von Daten verwenden?

Susan Sarandon
Susan SarandonOriginal
2024-12-02 03:04:10443Durchsuche

How Can I Efficiently Use Subqueries with `WHERE IN` in Laravel to Filter Data?

Unterabfragen mit der Klausel „WHERE IN“ in Laravel

In Laravel ist das Erstellen einer Unterabfrage innerhalb der Klausel „WHERE IN“ effizient Möglichkeit, Ergebnisse basierend auf Daten aus einer zugehörigen Tabelle zu filtern. Sehen wir uns ein bestimmtes Szenario an:

Sie haben die Aufgabe, Produkte anhand ihrer Kategorien abzurufen. Die Abfrage sollte Spalten wie ID, Name und Status enthalten und die Produkte sollten zu bestimmten Kategorien mit den IDs „223“ oder „15“ gehören.

Ursprüngliche 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

Laravel-äquivalente Verwendung Abschluss:

Products::whereIn('id', function($query){
    $query->select('paper_type_id')
    ->from(with(new ProductCategory)->getTable())
    ->whereIn('category_id', ['223', '15'])
    ->where('active', 1);
})
->get();

Erklärung:

Die Funktion „whereIn“ akzeptiert einen Abschluss als Argument, sodass Sie die darin enthaltene Unterabfrage definieren können.

  • from(): Wählt die Tabelle aus, aus der die Unterabfrage abruft Ergebnisse.
  • select(): Gibt die Spalte an, die von der Unterabfrage zurückgegeben werden soll.
  • whereIn() und where(): Filtert die Ergebnisse aus der Unterabfrage basierend auf den angegebenen Kriterien.

Vorteile der Verwendung Abschluss:

  • Verbesserte Lesbarkeit und Wartbarkeit des Codes.
  • Ermöglicht komplexere Unterabfragen mit mehreren Bedingungen oder Verknüpfungen.
  • Verbessert die Leistung durch Reduzierung der Anzahl der Datenbankaufrufe im Vergleich zur Verwendung mehrerer Joins.

Das obige ist der detaillierte Inhalt vonWie kann ich Unterabfragen mit „WHERE IN' in Laravel effizient zum Filtern von Daten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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