Heim  >  Artikel  >  Backend-Entwicklung  >  Laravel Learning – Beispielcode-Sharing für Datenbankoperationen und Abfragekonstruktoren

Laravel Learning – Beispielcode-Sharing für Datenbankoperationen und Abfragekonstruktoren

黄舟
黄舟Original
2017-03-21 09:25:391496Durchsuche


Kürzlich untersucht der Herausgeber das sogenannte beste Framework der Welt – Laravel. Tatsächlich ist der Lernrahmen die Idee des Lernrahmens! Ich möchte einige meiner Erfahrungen beim Lernen von Laravel in meinem Blog festhalten. Jeder ist herzlich eingeladen, meinen anderen GitHub-Blogs und Kurzbüchern zu folgen, um miteinander zu kommunizieren!

Version: Laravel 5.2
Datenbank: mysql 5.7
PHP7.1 Eine besteht darin, die statische Methode des

Appearance-Objekts zu verwenden, um die SQL-Abfrage direkt auszuführen, und die andere darin, die statische Methode der Model-Klasse zu verwenden (eigentlich auch die Implementierung von Facade, die den statischen Zugriff verwendet). Methode, um auf das Modell zuzugreifen, und verwendet intern die
-Magie. Die Methode delegiert den Zugriff auf die Mitgliedsmethode

AbfragevorgangVerwenden Sie die SQL-Anweisung, um den Auswahlabfragevorgang #

Das Ergebnis ist ein Array, und für ein

-Objekt wird die Verwendung dieser Methode empfohlen, die klarer ist DBcallStaticAlle Datenspalten aus der Datentabelle abrufen#

Eine einzelne Zeile/Spalte aus der Tabelle abfragen

Verwenden Sie die erste Methode, um eine einzelne Datenzeile zurückzugeben , das ein stdClass-Objekt zurückgibt
$results = DB::select('select * from users where id = ?', [1]);foreach ($results as $res) {    echo $res->name;
}

StdClassWenn Sie nur den Wert einer Spalte benötigen, können Sie die Wertmethode verwenden, um den Wert einer einzelnen Spalte direkt zu erhalten

$results = DB::select('select * from users where id = :id', ['id' => 1]);
Suchen Die Datenspalte in Blöcken aus der Datentabelle

Diese Methode wird für Operationen mit einer großen Datenmenge in der Datentabelle verwendet und jedes Mal, wenn das Ergebnis erhalten wird, Konzentrieren Sie sich darauf, einen Teil herauszunehmen, und verwenden Sie die Verschlussfunktion Um es zu verarbeiten, wird dieser Befehl im Allgemeinen im Artisan-Befehlszeilenprogramm verwendet, um große Datenmengen zu verarbeiten, wenn
$users = DB::table('users')->get();

foreach ($users as $user)
{
    var_dump($user->name);
}
zurückgegeben wird , die nachfolgende Verarbeitung wird gestoppt

Abfrage der Liste einer bestimmten Spalte aus der Datentabelle #

Zum Beispiel möchten wir alle
$user = DB::table('users')->where('name', 'John')->first();
echo $user->name;
Feldwerte

Die
$email = DB::table('users')->where('name', 'John')->value('email');
-Funktion hat hier zwei Parameter

Der erste Parameter ist die abzufragende Spalte und der zweite Parameter ist der Schlüssel jeder Spalte

DB::table('users')->chunk(100, function($users){
    foreach ($users as $user)
    {        //
    }
});

Aggregationsfunktionenfalse

Der Abfragekonstruktor stellt auch einige Aggregatfunktionen wie

usw. bereit.

titleAusgewählte Abfragebedingungen angeben

$titles = DB::table('roles')->pluck('title');foreach ($titles as $title) {    echo $title;
}
Fragen Sie die angegebenen Spalten ab#

pluck

Wenn Sie „select“ angegeben haben, aber einige Felder erneut hinzufügen möchten, verwenden Sie die addSelect-Methode
Collection pluck( string $column, string|null $key = null)

Abfrage für verschiedene Ergebnisse eindeutig#
$roles = DB::table('roles')->pluck('title', 'name');foreach ($roles as $name => $title) {    echo $title;
}

Verwenden Sie den nativen

-Ausdruck count,max,min,avg,sum#

$users = DB::table('users')->count();
$price = DB::table('orders')->max('price');
$price = DB::table('orders')->where('finalized', 1)->avg('price');
Mit der

-Methode können Sie das erforderliche SQL-Fragment in die Abfrage einfügen. Bei falscher Verwendung wird SQL jedoch nicht empfohlen Es kann zu einer Injektion kommen.

Join-Operation
$users = DB::table('users')->select('name', 'email as user_email')->get();

Inner Join#

$query = DB::table('users')->select('name');$users = $query->addSelect('age')->get();
Verwenden Sie Join, um eine Inner-Join-Operation durchzuführen. Der erste Parameter dieser Funktion ist der Name der Tabelle verbunden werden, und die anderen Parameter geben die Verbindungsbeschränkungen an

Erweiterte Join-Methode#
$users = DB::table('users')->distinct()->get();

Wenn die Einschränkungen der Join-Methode komplexer sind, können Sie eine Abschlussfunktion verwenden, um sie anzugeben

Wenn Sie verwenden möchten Um die Spaltenwerte mit dem angegebenen Array in den Join-Einschränkungen zu vergleichen, können Sie die Methoden where und OrWhere verwenden

DB::raw

Union-Operation
$users = DB::table('users')
      ->select(DB::raw('count(*) as user_count, status'))
      ->where(&#39;status&#39;, &#39;<>&#39;, 1)
      ->groupBy(&#39;status&#39;)
      ->get();

Um die Union-Operation zu verwenden, können Sie zunächst eine erstellen Abfrage und verwenden Sie dann die Union-Methode, um die zweite Abfrage zu binden

Ähnlich

Die Methode kann auch mit denselben Parametern wie Union verwendet werden.

$users = DB::table(&#39;users&#39;)
  ->join(&#39;contacts&#39;, &#39;users.id&#39;, &#39;=&#39;, &#39;contacts.user_id&#39;)
  ->join(&#39;orders&#39;, &#39;users.id&#39;, &#39;=&#39;, &#39;orders.user_id&#39;)
  ->select(&#39;users.*&#39;, &#39;contacts.phone&#39;, &#39;orders.price&#39;)
  ->get();
Where-Abfragebedingungen


Einfache Where-Bedingungen#

DB::table(&#39;users&#39;)
  ->leftJoin(&#39;posts&#39;, &#39;users.id&#39;, &#39;=&#39;, &#39;posts.user_id&#39;)
  ->get();
Verwenden Sie die Where-Methode, um Where-Bedingungen zur Abfrage hinzuzufügen. Diese Funktion erfordert im Allgemeinen drei Parameter: Spaltenname, Operator (beliebig). Alle von der Datenbank unterstützten Operatoren können verwendet werden), Spaltenwerte.

Das obige ist der detaillierte Inhalt vonLaravel Learning – Beispielcode-Sharing für Datenbankoperationen und Abfragekonstruktoren. 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