Heim >Datenbank >MySQL-Tutorial >Wie verwende ich Unterabfragen mit der „whereIn'-Klausel von Laravel?

Wie verwende ich Unterabfragen mit der „whereIn'-Klausel von Laravel?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-07 12:47:16924Durchsuche

How to Use Subqueries with Laravel's `whereIn` Clause?

Einbinden von Unterabfragen in Laravel-Abfragen: Ein Beispiel für eine Unterabfrage WHERE IN

Beim Umgang mit komplexen Datenbankabfragen bieten Unterabfragen eine leistungsstarke Möglichkeit, Daten abzurufen aus mehreren Tabellen oder filtern Sie Ergebnisse basierend auf Berechnungen. Laravel, ein beliebtes PHP-Framework, bietet eine benutzerfreundliche Oberfläche für die Arbeit mit Unterabfragen.

Problem:

Sie müssen in Laravel eine Abfrage erstellen, die extrahiert Daten aus der Tabelle „products“ mithilfe einer Unterabfrage, um basierend auf Werten in der Tabelle „product_category“ zu filtern. Insbesondere möchten Sie Zeilen einschließen, die die folgenden Kriterien erfüllen:

  • „id“ aus der Tabelle „products“ muss in der Spalte „product_id“ der Tabelle „product_category“ erscheinen.
  • Kategorie-ID-Werte sind „223“ oder „15“ in der Tabelle „product_category“.
  • Spalte „aktiv“ in der Die Tabelle „Produkte“ ist auf 1 gesetzt.

Lösung:

Um dies zu erreichen, bietet Laravel eine flexible Möglichkeit, Unterabfragen mithilfe von Abschlüssen in Ihre Abfragen zu integrieren:

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

    • function($query): Ein Abschluss, der die Unterabfrage definiert.
    • $query->select(...): Gibt an, aus welcher Spalte die Unterabfrage, die Sie abrufen möchten. In diesem Fall ist es „product_id“.
    • from(with(new ProductCategory)->getTable()): Bestimmt die Tabelle, aus der Daten für die Unterabfrage abgerufen werden sollen. Es verweist auf die Tabelle „product_category“.
    • ->whereIn('category_id', ['223', '15']): Legt die Filterbedingung für die Unterabfrage fest und beschränkt die Ergebnisse auf Zeilen, in denen "category_id" ist entweder '223' oder '15'.
    • ->where('active', 1): Fügt eine zusätzliche hinzu Filter, um sicherzustellen, dass „aktiv“ in der Tabelle „product_category“ auf 1 gesetzt ist.
  2. Hauptabfrage:

    • whereIn('id', ...): Dies ist die Hauptabfrage, die die im Abschluss definierte Unterabfrage verwendet. Es gleicht die Spalte „id“ in der Tabelle „products“ mit „product_id“ in den Ergebnissen der Unterabfrage ab.

Das obige ist der detaillierte Inhalt vonWie verwende ich Unterabfragen mit der „whereIn'-Klausel von Laravel?. 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