Heim >Backend-Entwicklung >PHP-Tutorial >Analyse von CURD-Operationen und kohärenten Operationen in der Laravel-Framework-Datenbank
Dieser Artikel stellt hauptsächlich die Zusammenfassung von CURD-Operationen, kohärenten Operationen und Kettenoperationen der Laravel-Framework-Datenbank vor. Dieser Artikel enthält eine große Anzahl häufig verwendeter Methoden für Datenbankoperationen
1. Wählt
Alle Zeilen in einer Tabelle abrufen
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }
Eine einzelne Zeile aus einer Tabelle abrufen
$user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name);
Zeilen für eine einzelne Spalte abrufen
$name = DB::table('users')->where('name', 'John')->pluck('name');
Ruft eine Liste von Spaltenwerten ab
$roles = DB::table('roles')->lists('title');
Diese Methode gibt einen Array-Header zurück . Sie können auch eine benutzerdefinierte Schlüsselspalte angeben, um das Array zurückzugeben.
$roles = DB::table('roles')->lists('title', 'name');
Geben Sie eine Select-Klausel an
$users = DB::table('users')->select('name', 'email')->get(); $users = DB::table('users')->distinct()->get(); $users = DB::table('users')->select('name as user_name')->get();
Select-Klausel, die einer vorhandenen Abfrage $ hinzugefügt wurde query = DB::table('users')->select('name');
$users = $query->addSelect('age')->get();
where
$users = DB::table('users')->where('votes', '>', 100)->get();
OR
$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Where Between
$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
Where Not Between
$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
Where In With An Array
$users = DB::table('users')->whereIn('id', array(1, 2, 3))->get(); $users = DB::table('users')->whereNotIn('id', array(1, 2, 3))->get();
Where Null verwenden, um Datensätze mit nicht festgelegten Werten zu finden
$users = DB::table('users')->whereNull('updated_at')->get();
Sortieren nach, Gruppieren nach und Haben
$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
Offset & Limit
$users = DB::table('users')->skip(10)->take(5)->get();
2. Verbindungen
Joins
Der Abfrage-Builder kann auch zum Schreiben von Join-Anweisungen verwendet werden. Schauen Sie sich das folgende Beispiel an:
Basic Join Statement
DB::table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.id', 'contacts.phone', 'orders.price') ->get();
Left Join Statement
DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get(); DB::table('users') ->join('contacts', function($join) { $join->on('users.id', '=', 'contacts.user_id')->orOn(...); }) ->get(); DB::table('users') ->join('contacts', function($join) { $join->on('users.id', '=', 'contacts.user_id') ->where('contacts.user_id', '>', 5); }) ->get();
3 . Gruppierung
Manchmal müssen Sie möglicherweise erweiterte Where-Klauseln erstellen, z. B. „exists“ oder verschachtelte Parametergruppierungen. Der Laravel-Abfrage-Builder kann Folgendes verarbeiten: DB::table('users')
->where('name', '=', 'John') ->orWhere(function($query) { $query->where('votes', '>', 100) ->where('title', '<>', 'Admin'); }) ->get();
Die obige Abfrage erzeugt die folgende SQL:
select * from users where name = 'John' or (votes > 100 and title <> 'Admin') Exists Statements DB::table('users') ->whereExists(function($query) { $query->select(DB::raw(1)) ->from('orders') ->whereRaw('orders.user_id = users.id'); }) ->get();
Die obige Abfrage erzeugt die folgende SQL:
select * from userswhere exists ( select 1 from orders where orders.user_id = users.id )
4. Aggregation
Der Abfrage-Builder bietet auch verschiedene Aggregationsmethoden, wie Statistiken, Max, Min, Durchschnitt und Summe.
Aggregationsmethoden verwenden
$users = DB::table('users')->count(); $price = DB::table('orders')->max('price'); $price = DB::table('orders')->min('price'); $price = DB::table('orders')->avg('price'); $total = DB::table('users')->sum('votes');
Rohausdrücke
Manchmal müssen Sie möglicherweise eine Rohausdrucksabfrage verwenden. Diese Ausdrücke werden in die Abfragezeichenfolge eingefügt. Achten Sie also darauf, keine SQL-Einfügungspunkte zu erstellen. Um einen Rohausdruck zu erstellen, können Sie DB:rawmethod:
Verwenden eines Rohausdrucks verwenden
$users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();
Erhöhen oder verringern Sie den Wert einer Spalte
DB::table('users')->increment('votes'); DB::table('users')->increment('votes', 5); DB::table('users')->decrement('votes'); DB::table('users')->decrement('votes', 5);
Sie können auch zusätzliche Spaltenaktualisierungen angeben:
DB::table('users')->increment('votes', 1, array('name' => 'John'));
Einfügungen
Datensatz in Tabelle einfügen
DB::table('users')->insert( array('email' => 'john@example.com', 'votes' => 0) );
Datensatz in Tabelle mit automatisch erhöhter ID einfügen
Wenn die Tabelle ein Auto hat -inkrementiertes ID-Feld Verwenden Sie insertGetId, um einen Datensatz einzufügen und die ID abzurufen:
$id = DB::table('users')->insertGetId( array('email' => 'john@example.com', 'votes' => 0) );
Hinweis: Bei Verwendung der PostgreSQL-Methode insertGetId wird erwartet, dass die automatisch inkrementierende Spalte den Namen „id“ erhält.
Mehrere Datensätze in die Tabelle einfügen
DB::table('users')->insert(array( array('email' => 'taylor@example.com', 'votes' => 0), array('email' => 'dayle@example.com', 'votes' => 0), ));
4. Aktualisierungen
Datensätze in einer Tabelle aktualisieren
DB::table('users') ->where('id', 1) ->update(array('votes' => 1));
5. Löscht
Datensätze in der Tabelle löschen
DB::table('users')->where('votes', '<', 100)->delete();
Alle Datensätze in der Tabelle löschen
DB::table('users')->delete();
Eine Tabelle löschen
DB::table('users')->truncate();
6. Vereinigungen
Der Abfrage-Builder bietet auch eine schnelle Möglichkeit, zwei Abfragen zu „vereinigen“:
$first = DB::table('users')->whereNull('first_name'); $users = DB::table('users')->whereNull('last_name')->union($first)->get();
Die Methode „unionAll“ kann ebenfalls verwendet werden und hat die gleiche Methodensignatur.
Pessimistisches Sperren
Der Abfrage-Generator enthält einige „pessimistische Sperren“-Funktionen, die Sie bei Ihren SELECT-Anweisungen unterstützen. Um die SELECT-Anweisung „shared lock“ auszuführen, können Sie die Methode „sharedLock“ verwenden, um Folgendes abzufragen:
DB::table('users')->where('votes', '>', 100)->sharedLock()->get();
Um „lock“ in einer SELECT-Anweisung zu aktualisieren, können Sie die Methode lockForUpdate verwenden, um Folgendes abzufragen:
DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();
7. Abfragen zwischenspeichern
Sie können die Ergebnisse einer Abfrage mithilfe von Mnemoniken einfach zwischenspeichern:
$users = DB::table('users')->remember(10)->get();
In diesem Beispiel werden die Ergebnisse der Abfrage gespeichert zehn Minuten zwischengespeichert werden. Wenn Abfrageergebnisse zwischengespeichert werden, werden sie nicht in der Datenbank ausgeführt und die Ergebnisse werden aus dem von Ihrer Anwendung angegebenen Standard-Cache-Treiber geladen. Wenn Sie einen Treiber verwenden, der Caching unterstützt, können Sie auch Tags zum Cache hinzufügen:
$users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle zum Lernen hilfreich ist. Bitte achten Sie auf die chinesische PHP-Website!
Verwandte Empfehlungen:
PHP
Parameterbeschreibung von CURL CURLOPT
Das obige ist der detaillierte Inhalt vonAnalyse von CURD-Operationen und kohärenten Operationen in der Laravel-Framework-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!