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

不言
Freigeben: 2023-04-01 06:24:02
Original
1685 Leute haben es durchsucht

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

Eine einzelne Zeile aus einer Tabelle abrufen

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

Zeilen für eine einzelne Spalte abrufen

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

Ruft eine Liste von Spaltenwerten ab

$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

Select-Klausel, die einer vorhandenen Abfrage $ hinzugefügt wurde query = DB::table('users')->select('name');

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

where

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

OR

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

Where Between

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

Where Not Between

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

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

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

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

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

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

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

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

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

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

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!

Verwandte Etiketten:
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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage