Heim >Datenbank >MySQL-Tutorial >Laravel-Tipp: whereHas oder whereRelation?

Laravel-Tipp: whereHas oder whereRelation?

Barbara Streisand
Barbara StreisandOriginal
2025-01-17 12:02:12152Durchsuche

Tauchen Sie ein in Laravel Eloquent: Entdecken Sie whereRelation und seine praktischen Anwendungen

Dieser Beitrag untersucht Laravel's Eloquent ORM, wobei der Schwerpunkt auf der whereRelation-Methode liegt und sie mit der älteren whereHas-Methode verglichen wird. Wir untersuchen seine Stärken und Grenzen und führen Sie zu einer optimalen Nutzung.

Szenario: Abrufen von Benutzern mit abgeschlossenen Bestellungen. Vor Laravel 8 war whereHas der Standard für die Abfrage verwandter Tabellenspalten. Laravel 8 führte whereRelation ein und bietet eine prägnantere Syntax.

Laravel Tip: whereHas or whereRelation?

Die verbesserte Syntax ist unbestreitbar sauberer!

Leistung und Einschränkungen: Ein weit verbreitetes Missverständnis ist, dass whereRelation whereHas übertrifft. Die Analyse zeigt jedoch, dass beide identische SQL-Abfragen generieren:

whereHasAbfrage:

<code class="language-sql">select * from `users` where exists 
  (
    select * from `orders` 
    where `users`.`id` = `orders`.`created_by` 
    and `status` = ? 
    and `orders`.`deleted_at` is null
  ) 
and `users`.`deleted_at` is null</code>

whereRelationAbfrage:

<code class="language-sql">select * from `users` where exists 
  (
    select * from `orders` 
    where `users`.`id` = `orders`.`created_by` 
    and `status` = ? 
    and `orders`.`deleted_at` is null
  ) 
and `users`.`deleted_at` is null</code>

Der Hauptunterschied liegt in der Funktionalität. whereRelation ist auf einzelne Bedingungen in der zugehörigen Tabelle beschränkt, während whereHas mehrere Bedingungen innerhalb einer einzelnen Unterabfrage unterstützt. whereRelation würde für jede Bedingung eine separate Unterabfrage erstellen, was sie für mehrere Kriterien ineffizient machen würde.

Laravel Tip: whereHas or whereRelation?

Die Wahl der richtigen Eloquent-Methode ist entscheidend für die Lesbarkeit und Effizienz des Codes. Berücksichtigen Sie die Komplexität Ihrer Abfrage, bevor Sie whereHas oder whereRelation auswählen. Viel Spaß beim Codieren! ?

Das obige ist der detaillierte Inhalt vonLaravel-Tipp: whereHas oder whereRelation?. 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