Heim > php教程 > PHP开发 > Hauptteil

Zusammenfassung der CURD-Operationen und kohärenten Operationen der Laravel-Framework-Datenbank

高洛峰
Freigeben: 2016-12-27 10:21:45
Original
1356 Leute haben es durchsucht

1. Wählt

Alle Zeilen in der Tabelle abrufen

$users = DB::table('users')->get();
foreach ($users as $user)
{
var_dump($user->name);
}
Nach dem Login kopieren

Eine einzelne Zeile aus der Tabelle abrufen

$user = DB::table('users')->where('name', 'John')->first();
var_dump($user->name);
Nach dem Login kopieren

Zeilen einer einzelnen Spalte abrufen

$name = DB::table('users')->where('name', 'John')->pluck('name');
Nach dem Login kopieren

Eine Liste von Spaltenwerten abrufen

$roles = DB::table('roles')->lists('title');
Nach dem Login kopieren

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');
Nach dem Login kopieren

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();
Nach dem Login kopieren

Fügen Sie die Select-Klausel zu einer vorhandenen Abfrage hinzu $query = DB ::table( 'users')->select('name');

$users = $query->addSelect('age')->get();
Nach dem Login kopieren

wo

$users = DB::table('users')->where('votes', '>', 100)->get();
Nach dem Login kopieren

ODER

$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();
Nach dem Login kopieren

Wo zwischen

$users = DB::table('users')->whereBetween('votes', array(1, 100))->get();
Nach dem Login kopieren

Wo nicht zwischen

$users = DB::table('users')->whereNotBetween('votes', array(1, 100))->get();
Nach dem Login kopieren

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();
Nach dem Login kopieren

Where Null verwenden, um Datensätze mit nicht festgelegten Werten zu finden

$users = DB::table('users')->whereNull('updated_at')->get();
Nach dem Login kopieren

Sortieren nach , Gruppieren nach und mit

$users = DB::table('users')->orderBy('name', 'desc')->groupBy('count')->having('count', '>', 100)->get();
Nach dem Login kopieren

Offset & Limit

$users = DB::table('users')->skip(10)->take(5)->get();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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(&#39;title&#39;, &#39;<>&#39;, &#39;Admin&#39;);
})
->get();
Nach dem Login kopieren

Die obige Abfrage erzeugt die folgende SQL:

  select * from users where name = &#39;John&#39; or (votes > 100 and title 
<> &#39;Admin&#39;)
  Exists Statements
  DB::table(&#39;users&#39;)
  ->whereExists(function($query)
  {
  $query->select(DB::raw(1))
  ->from(&#39;orders&#39;)
  ->whereRaw(&#39;orders.user_id = users.id&#39;);
  })
  ->get();
Nach dem Login kopieren

Die obige Abfrage erzeugt die folgende SQL:

select * from userswhere exists (
select 1 from orders where orders.user_id = users.id
)
Nach dem Login kopieren

4. Aggregation

Der Abfrage-Builder bietet auch verschiedene Aggregationsmethoden wie Statistiken, Max, Min, Durchschnitt und Summe.

Aggregationsmethoden verwenden

$users = DB::table(&#39;users&#39;)->count();
$price = DB::table(&#39;orders&#39;)->max(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->min(&#39;price&#39;);
$price = DB::table(&#39;orders&#39;)->avg(&#39;price&#39;);
$total = DB::table(&#39;users&#39;)->sum(&#39;votes&#39;);
Nach dem Login kopieren

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(&#39;users&#39;)
->select(DB::raw(&#39;count(*) as user_count, status&#39;))
->where(&#39;status&#39;, &#39;<>&#39;, 1)
->groupBy(&#39;status&#39;)
->get();
Nach dem Login kopieren
verwenden

Erhöhen oder verringern Sie den Wert einer Spalte

DB::table(&#39;users&#39;)->increment(&#39;votes&#39;);
DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 5);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;);
DB::table(&#39;users&#39;)->decrement(&#39;votes&#39;, 5);
Nach dem Login kopieren

Sie können auch zusätzliche Spaltenaktualisierungen angeben:

 DB::table(&#39;users&#39;)->increment(&#39;votes&#39;, 1, array(&#39;name&#39; => &#39;John&#39;));
Nach dem Login kopieren

Einfügungen

Datensätze in die Tabelle einfügen

DB::table(&#39;users&#39;)->insert(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
Nach dem Login kopieren

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(&#39;users&#39;)->insertGetId(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 0)
);
Nach dem Login kopieren

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(&#39;users&#39;)->insert(array(
array(&#39;email&#39; => &#39;taylor@example.com&#39;, &#39;votes&#39; => 0),
array(&#39;email&#39; => &#39;dayle@example.com&#39;, &#39;votes&#39; => 0),
));
Nach dem Login kopieren

4. Aktualisierungen

Datensätze in einer Tabelle aktualisieren

DB::table(&#39;users&#39;)
->where(&#39;id&#39;, 1)
->update(array(&#39;votes&#39; => 1));
Nach dem Login kopieren

5

Datensätze in der Tabelle löschen

DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;<&#39;, 100)->delete();
Nach dem Login kopieren
Alle Datensätze in der Tabelle löschen

DB::table(&#39;users&#39;)->delete();
Nach dem Login kopieren
Eine Tabelle löschen

DB::table(&#39;users&#39;)->truncate();
Nach dem Login kopieren
6. Gewerkschaften

Der Abfrage-Builder bietet auch eine schnelle Möglichkeit, zwei Abfragen zu „vereinigen“:

  $first = DB::table(&#39;users&#39;)->whereNull(&#39;first_name&#39;);
  $users = 
DB::table(&#39;users&#39;)->whereNull(&#39;last_name&#39;)->union($first)->get();
Nach dem Login kopieren
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(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 
100)->sharedLock()->get();
Nach dem Login kopieren
Um „lock“ in einer SELECT-Anweisung zu aktualisieren, können Sie die Methode lockForUpdate verwenden, um Folgendes abzufragen:

 DB::table(&#39;users&#39;)->where(&#39;votes&#39;, &#39;>&#39;, 100)->lockForUpdate()->get();
Nach dem Login kopieren
VII , Abfrage zwischenspeichern

Sie können die Ergebnisse einer Abfrage mithilfe von Mnemoniken einfach zwischenspeichern:

$users = DB::table(&#39;users&#39;)->remember(10)->get();
Nach dem Login kopieren
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(&#39;users&#39;)->cacheTags(array(&#39;people&#39;, &#39;authors&#39;))->remember(10)->get();
Nach dem Login kopieren
Weitere Artikel zu CURD-Operationen der Laravel-Framework-Datenbank und einer kohärenten Operationszusammenfassung finden Sie auf der chinesischen PHP-Website !

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