Heim  >  Artikel  >  php教程  >  Zusammenfassung der CURD-Operationen und kohärenten Operationen der Laravel-Framework-Datenbank

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

高洛峰
高洛峰Original
2016-12-27 10:21:451355Durchsuche

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

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();

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(&#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;);

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();
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);

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;));

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)
);

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)
);

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),
));

4. Aktualisierungen

Datensätze in einer Tabelle aktualisieren

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

5

Datensätze in der Tabelle löschen

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

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

DB::table(&#39;users&#39;)->truncate();
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();
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();
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();
VII , Abfrage zwischenspeichern

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

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