1. Wählt
Alle Zeilen in der Tabelle abrufen
$users = DB::table('users')->get(); foreach ($users as $user) { var_dump($user->name); }
Eine einzelne Zeile aus der Tabelle abrufen
$user = DB::table('users')->where('name', 'John')->first(); var_dump($user->name);
Zeilen einer einzelnen Spalte abrufen
$name = DB::table('users')->where('name', 'John')->pluck('name');
Eine Liste von Spaltenwerten abrufen
$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();
Fügen Sie die Select-Klausel zu einer vorhandenen Abfrage hinzu $query = DB ::table( 'users')->select('name');
$users = $query->addSelect('age')->get();
wo
$users = DB::table('users')->where('votes', '>', 100)->get();
ODER
$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Wo zwischen
$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
Wo nicht zwischen
$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
Wo in einem 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 mit
$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. Verbindung
Joins
Query Builder Kann auch verwendet werden Verbindungsanweisungen schreiben. 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öglicherweise müssen erweiterte Where-Klauseln wie „exists“ oder verschachtelte Parametergruppierungen erstellt werden. 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:
Using A Raw Expression
$users = DB::table('users') ->select(DB::raw('count(*) as user_count, status')) ->where('status', '<>', 1) ->groupBy('status') ->get();verwenden
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
Datensätze in die Tabelle einfügen
DB::table('users')->insert( array('email' => 'john@example.com', 'votes' => 0) );
Datensatz mit automatisch inkrementierender ID in Tabelle einfügen
Wenn die Tabelle über ein automatisch inkrementierendes ID-Feld verfügt, 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“ trägt.
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
Datensätze in der Tabelle löschenDB::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. Gewerkschaften
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“ funktioniert ebenfalls mit derselben Methodensignatur. Pessimistisches Sperren Der Abfrage-Generator enthält einige „pessimistische Sperren“-Funktionen, die Sie bei Ihren SELECT-Anweisungen unterstützen. Um eine 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();VII , Abfrage 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 zwischengespeichert zehn Minuten. 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 dem Cache auch Tags hinzufügen:
$users = DB::table('users')->cacheTags(array('people', 'authors'))->remember(10)->get();Weitere Artikel zu CURD-Operationen der Laravel-Framework-Datenbank und einer kohärenten Operationszusammenfassung finden Sie auf der chinesischen PHP-Website !