Heim >Backend-Entwicklung >PHP-Tutorial >Analyse von CURD-Operationen und kohärenten Operationen in der Laravel-Framework-Datenbank

Analyse von CURD-Operationen und kohärenten Operationen in der Laravel-Framework-Datenbank

不言
不言Original
2018-06-13 16:20:211638Durchsuche

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(&#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:

Verwenden eines Rohausdrucks verwenden

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

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

Datensatz in Tabelle einfügen

DB::table(&#39;users&#39;)->insert(
array(&#39;email&#39; => &#39;john@example.com&#39;, &#39;votes&#39; => 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(&#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“ erhält.

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. Löscht

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. Vereinigungen

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

7. Abfragen 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 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(&#39;users&#39;)->cacheTags(array(&#39;people&#39;, &#39;authors&#39;))->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!

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