Heim > Backend-Entwicklung > PHP-Tutorial > Eloquenter Trick: Laravel-Modell aus Subquery

Eloquenter Trick: Laravel-Modell aus Subquery

WBOY
Freigeben: 2024-08-17 06:50:06
Original
510 Leute haben es durchsucht

Eloquent Trick: Laravel Model from Subquery

In Laravel ist es üblich, die entsprechende Tabelle eines Modells mithilfe der Tabelleneigenschaft zu definieren, wie zum Beispiel:

class User extends Model {
  protected $table = 'users';
}
Nach dem Login kopieren

Anstatt jedoch direkt einer Tabelle zuzuordnen, können wir eine Unterabfrage verwenden. Mit dieser Technik können wir komplexe Abfragen innerhalb der Anwendungsschicht kapseln, ähnlich wie beim Erstellen einer Datenbankansicht, jedoch mit der zusätzlichen Flexibilität von Eloquent-Operationen.

Stellen Sie sich beispielsweise eine Benutzertabelle vor, in der Informationen sowohl zu Administratoren als auch zu regulären Benutzern gespeichert sind. Wir können ein AdminUser-Modell mithilfe einer Unterabfrage erstellen:

class AdminUser
{
    public function getTable(): string|\Illuminate\Contracts\Database\Query\Expression
    {
        $sql = User::query()
            ->select('id', 'name')
            ->where('admin_user', true)
            ->toRawSql();

        return DB::raw(sprintf('(%s) as admin_users', $sql));
    } 
}
Nach dem Login kopieren

Dieses Modell ruft Daten aus einer Unterabfrage ab (wählen Sie ID und Namen von Benutzern aus, wobei admin_user = 1), sodass Sie sie wie ein Standardmodell abfragen können:

AdminUser::query()->get();
Nach dem Login kopieren

oder

AdminUser::query()->first();
Nach dem Login kopieren

Beachten Sie jedoch, dass bestimmte Abfragen, wie find(1), nicht direkt funktionieren:

AdminUser::query()->find(1);
Nach dem Login kopieren

Um dies zu umgehen, können Sie eine Where-Bedingung in Kombination mit first():
verwenden

AdminUser::query()->where('id', 1)->first();
Nach dem Login kopieren

Abschluss

Das bereitgestellte Beispiel ist eine einfache Veranschaulichung, wie wir Logik innerhalb eines Modells strukturieren können. Dieser Ansatz kann jedoch skaliert und angepasst werden, um viel komplexere Szenarien abzudecken. Durch die Nutzung solcher Strukturen können wir komplizierte Logik effizient verwalten und extrahieren und so sicherstellen, dass unsere Modelle auch bei zunehmender Komplexität organisiert, wartbar und skalierbar bleiben.

Das obige ist der detaillierte Inhalt vonEloquenter Trick: Laravel-Modell aus Subquery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage