Laravel Framework 03: Die DB-Klasse betreibt die Datenbank
I. Übersicht
- Gemäß der MVC-Architektur sollten Datenoperationen im Modell abgeschlossen werden. Wenn Sie das Modell jedoch nicht verwenden, können Sie die Datenbank auch mit der DB-Klasse des Laravel-Frameworks betreiben.
- Bei einigen äußerst komplexen SQL-Anweisungen ist es schwierig, sie mit Model zu vervollständigen. Sie können die DB-Klasse verwenden, um natives SQL auszuführen.
- Grundlegende Verwendung:
DB::table('tableName')
Rufen Sie die Instanz der Tabelle „tableName“ ab.
2. Erstellung und Konfiguration von Datentabellen
-
Erstellen Sie Datenbanken und Datentabellen
CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; use test; create table member( id int PRIMARY KEY auto_increment, name VARCHAR(32) not null, age TINYINT UNSIGNED not null, email VARCHAR(32) not null )ENGINE myisam charset utf8;
-
Datenbankkonfiguration in Laravel
-
Der strikte Modus ist standardmäßig in config/database aktiviert. Kann während der Entwicklung ausgeschaltet werden.
-
Die DB-Fassade wurde in config/app.php eingeführt
3. Vorgänge hinzufügen, löschen und ändern
1. Informationen hinzufügen
- Es gibt zwei Hauptfunktionen zum Hinzufügen von Daten zu einer Tabelle in der Datenbank.
- insert() kann ein oder mehrere Elemente hinzufügen und der Rückgabewert ist vom Typ Boolean.
- insertGetID() kann nur ein Datenelement hinzufügen und die automatisch inkrementierte ID zurückgeben.
- Fügen Sie ein Datenelement hinzu
public function add() {
$db = DB::table("member");
$result = $db->insert([
'name' => "冬梅",
'age' => 18,
'email' => "[email protected]"
]);
dd($result);
}
- Fügen Sie mehrere Datenelemente hinzu
public function add() {
$db = DB::table("member");
$result = $db->insert([
[
'name' => "冬梅",
'age' => 18,
'email' => "[email protected]"
],
[
'name' => '秋雅',
'age' => 19,
'email' => "[email protected]"
]
]);
dd($result);
}
- Fügen Sie einen Datensatz hinzu und rufen Sie die ID ab
public function add() {
$db = DB::table("member");
$result = $db->insertGetId([
"name" => "夏洛",
"age" => 20,
"email" => "[email protected]"
]);
dd($result);
}
2. Daten ändern
-
Datenänderungen können mit update(), increment() und decrement() implementiert werden.
- update kann alle Felder im gesamten Datensatz ändern und die Anzahl der betroffenen Zeilen zurückgeben.
- Inkrementieren und Dekrementieren numerische Felder ändern (Inkrementieren oder Dekrementieren)
-
Nutzen Sie
where(字段, 运算符, 值)
qualifizierte Daten. Wenn der Operator ist=
, muss der zweite Parameter nicht geschrieben werden.- where()->where()…: Diese Syntax ist eine UND-Beziehung.
- where()->orWhere()…: Diese Syntax ist eine Oder-Beziehung.
-
Ändern Sie den Namen und das Alter von ID 1
public function update() { $db = DB::table("member"); $result = $db->where("id", "=", 1)->update([ "name" => "张三丰", 'age' => 200 ]); dd($result); }
-
Erhöhe das Alter von ID 2 um 10.
public function update() { $db = DB::table("member"); # 加10 $result = $db->where("id", 2)->increment('age', 10); # 减10 $result = $db->where("id", 2)->decrement('age', 10); dd($result); }
3. Daten löschen
- Beim Löschen gibt es zwei Möglichkeiten: physisches Löschen und logisches Löschen (in Leer ändern).
- Physische Löschung:
DB::table('tableName')->where('id', 1)->delete();
. Gibt die Anzahl der betroffenen Zeilen zurück. - Löschen Sie die gesamte Tabelle:
DB::table('tableName')->truncate();
4. Abfragevorgang
1. Holen Sie sich grundlegende Daten
-
Holen Sie sich alle Daten in der Tabelle:
DB::table('member')->get();
. Der Rückgabewert ist ein Collection-Objekt.public function select() { $db = DB::table("member"); $result = $db->get(); dd($result); }
-
Beim Durchlaufen des Collection-Objekts erhalten Sie ebenfalls ein Objekt.
public function select() { $db = DB::table("member"); $result = $db->get(); foreach ($result as $index => $item) { echo "id是:{ $item->id},名字是:{ $item->name},邮箱是:{ $item->email}<br>"; } }
-
Sie können auch where und orWhere verwenden, um den Umfang der Abfrage einzuschränken.
2. Rufen Sie eine einzelne Datenzeile ab
- Verwenden Sie zuerst, um ein einzeiliges Objekt zu erhalten. Entspricht Limit 1.
$db->first();
$data = $db->where('age', ">", 25)->first();
dd($data);
3. Ermitteln Sie den Wert eines Felds
- Verwenden Sie diese Option
value('字段名')
, um bestimmte Werte abzurufen.
$data = $db->where('id', 1)->value("name");
dd($data);
4. Rufen Sie die Werte mehrerer Felder ab
- Verwenden Sie diese Option
select('字段名')
, um die Werte mehrerer Felder abzurufen.
$data = $db->select('name as 名字', "email")->get();
dd($data);
5. Sortieren
orderBy()
Daten sortieren nach
$data = $db->orderBy('age', 'desc')->get();
dd($data);
6. Paginierung
DB::table('member')->limit(3)->offset(2)->get();
- limit: Begrenzen Sie die Anzahl der Ausgabezeilen
- Offset: Wo soll ich anfangen?
- Die Kombination entspricht: Limit 5, 5
paginate
Die Methode legt automatisch den entsprechenden Offset und Grenzwert basierend auf der aktuellen Seitenzahl fest, die der Benutzer durchsucht hat.DB::table('users')->paginate(15);
5. Führen Sie beliebige SQL-Anweisungen aus
- Führen Sie beliebige Änderungen durch:
DB::statement("SQL语句");
- Beliebige Abfragen ausführen:
DB::select("SQL语句");