Db: 是TP5操作数据库的入口类。它的作用是为连接数据库做准备,我们只需要在database.php里填写相应的配置即可。
Connection: 是TP5的连接器类,因为TP5支持四种数据库(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封装了一个类来提供统一的调用接口来支持我们连接数据库(这里的连接是惰性连接,只有在执行SQL的时候才会真正连接)。
Query: 查询器,因为不同数据库的SQL语句不同,所以封装了一个Query类来提供统一的接口,以实现不同数据库的CURD操作。查询器是TP5数据访问层的核心,它连接了Connection和Builder。
Builder: 生成器。这个类主要是把Query的查询参数生成相应的sql语句,然后把其返回给Connection供其使用。
In TP5 gibt es drei Methoden für den Datenbankzugriff:
Native SQL-Anweisung.
Db::query('select * from think_user where id=?',[8]); Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
Abfragekonstruktor
Es ist zu beachten, dass das obige In Die Abfragemethode „Suchen“, „Auswählen“, „Einfügen“, „Aktualisieren“ und „Löschen“ sind alles Abfrageoperationen, und die anderen sind Hilfsoperationen. Die Hilfsoperationen geben ein Objekt zurück und unterstützen Kettenaufrufe. Sobald die Abfrageoperation jedoch ausgeführt wurde, kann sie nicht mehr aufgerufen werden.
Die Reihenfolge verschiedener Hilfsoperationen hat keine Auswirkung, die Reihenfolge derselben Hilfsoperationen jedoch schon.
不同的辅助操作,先后顺序没影响。Db::table('banner')->where('id', '>', '2')->order('update_time asc')->select();Db::table('banner')->order('update_time asc')->where('id', '>', '2')->select();
相同的查询操作,先后顺序有影响。 $list = Db::table('data') ->where('id', '>', 1) ->where('name', 'like', '%think%') ->order('id', 'desc') ->order('create_time', 'desc') ->limit(8) ->select(); $list = Db::table('data') ->where('name', 'like', '%think%') ->where('id', '>', 1) ->order('create_time', 'desc') ->order('id', 'desc') ->limit(8) ->select();
Modell
ORM-Objektbeziehungszuordnung Die objektrelationale Zuordnung
wird unserer Datenbank über die Modelltabelle zugeordnet und Bearbeiten Sie dann die Datenbank, indem Sie das Modell bedienen.
Vergleichen wir es mit dem Abfragekonstruktor
// 查询操作$user = Db::table('user')->find(1);// 取值操作echo $user['name'];echo $user['email'];// 设置操作$user['name'] = 'topthink';$user['email'] = 'thinkphp@qq.com';// 更新操作Db::table('user')->update($user);
Wenn es sich um eine Modelloperation handelt, kann sie mit dem folgenden Code implementiert werden:
// 查询操作$user = User::get(1);// 取值操作echo $user->name; echo $user->email;// 设置操作$user->name = 'topthink';$user->email = 'thinkphp@qq.com';// 更新操作$user->save();
Dies liegt außerhalb des Modells. und Es handelt sich um die Werterfassungs- und Einstellungsvorgänge im Controller, aber innerhalb des Modells wird die folgende Methode verwendet:
// 取值操作echo $user->getData('name'); echo $user->getData('email');// 设置操作echo $user->data('name', 'SpawN'); echo $user->data('email', '123@qq.com');
CURD-Operation des Modells
Erstellen
Datenbanknutzung:
Db::table('user')->insert([ 'name' => 'spawn', 'email' => '123@qq.com'])
Modellnutzung:
$user = new User;$user->save([ 'name' => 'spawn', 'email' => '123@qq.com'])$user = User::create([ 'name' => 'sapwn', 'email' => '123@qq.com'])
Zusammenfassung:
speichern (dynamisch) Rückgabe: Anzahl der betroffenen Datensätze
create(static) Gibt zurück: Modellobjektinstanz (Methode kann direkt aufgerufen werden)
Read
Db:
$user = Db::table('user')->where('id', 1)->find();
Modell:
$user = User::get(1);
Es ist zu beachten, dass find und select Methoden des Abfragekonstruktors sind und get und all Methoden des Modells sind. Das Modell basiert jedoch auf dem Abfragekonstruktor, sodass das Modell die Such- und Auswahlmethoden aufrufen kann, der Abfragekonstruktor jedoch nicht die get- und alle Methoden aufrufen kann
Zusammenfassung:
Methodenfunktionen Rückgabewert
get Eine einzelne Datensatz-Modellobjektinstanz abfragen
find Eine einzelne Datensatz-Modellobjektinstanz abfragen
alle Mehrere Datensätze basierend auf dem Primärschlüssel-Array oder Datensatz mit Modellobjektinstanzen abfragen
Wählen Sie „Mehrere Datensätze basierend abfragen“. unter Bedingungen, die Modellobjektinstanzen enthalten Array oder Datensatz
Update
Db:
Db::table('user')->where('id', 1)->update([ 'name' => 'haha', 'email' => 'heihei@qq.com'])
Modell:
$user = User::get(1);$user->save([ 'name' => 'haha', 'email' => 'heihei@qq.com']) 或者 User::update([ 'name' => 'topthink', 'email' => 'topthink@qq.com', ], ['id' => 1]);
Zusammenfassung:
Methode Funktion Rückgabewert
speichern Daten aktualisieren Anzahl der betroffenen Datensätze
aktualisieren Daten aktualisieren (statisch) Modellobjektinstanz zurückgeben
需要注意的是,模型的更新操作是只更新有变化的数据。性能比较好。
Löschen
Db:
Db::table('user')->delete(1);
Modell:
$user = User::get(1);$user->delete(); 或者 User::destory(1);
Zusammenfassung:
Methode Funktion Rückgabewert
löschen Aktuelle Daten löschen Anzahl der betroffenen Datensätze
zerstören Angegebene Daten löschen (statisch) Betroffene Anzahl der Datensätze
Da wir nun die grundlegenden CURD-Operationen des Modells beherrschen, fassen wir die Methodenunterschiede zusammen:
Verwendung DB-Klassenmodell (dynamisch) Modell (statisch)
Erstellen, einfügen, speichern, erstellen
Update, aktualisieren, speichern, aktualisieren
Einzelnes lesen, finden, finden, bekommen
Mehrfach lesen, auswählen, alle auswählen
Löschen, löschen, löschen, zerstören, zerstören
Dieser Artikel erklärt die Datenbank und Modellverwendung von ThinkPHP5. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Eine Fallstudie zum Datenbankbetrieb von thinkphp5.0
Listen Sie einige Ähnlichkeiten und Unterschiede zwischen ThinkPHP5 und auf ThinkPHP3
Erstellen Sie das einfachste ThinkPHP-Projekt
Das obige ist der detaillierte Inhalt vonInformationen zur Datenbank- und Modellnutzung von ThinkPHP5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!