Heim > Backend-Entwicklung > PHP-Tutorial > Informationen zur Datenbank- und Modellnutzung von ThinkPHP5

Informationen zur Datenbank- und Modellnutzung von ThinkPHP5

jacklove
Freigeben: 2023-04-01 09:18:02
Original
5158 Leute haben es durchsucht

1. TP5-Datenbankarchitektur

Informationen zur Datenbank- und Modellnutzung von ThinkPHP5

Db:  是TP5操作数据库的入口类。它的作用是为连接数据库做准备,我们只需要在database.php里填写相应的配置即可。
Nach dem Login kopieren
Connection: 是TP5的连接器类,因为TP5支持四种数据库(Mysql,Pgsql,Sqlite,Sqlsrv),所以TP5封装了一个类来提供统一的调用接口来支持我们连接数据库(这里的连接是惰性连接,只有在执行SQL的时候才会真正连接)。
Nach dem Login kopieren
Query: 查询器,因为不同数据库的SQL语句不同,所以封装了一个Query类来提供统一的接口,以实现不同数据库的CURD操作。查询器是TP5数据访问层的核心,它连接了Connection和Builder。
Nach dem Login kopieren
Builder: 生成器。这个类主要是把Query的查询参数生成相应的sql语句,然后把其返回给Connection供其使用。
Nach dem Login kopieren

2. Datenbankzugriff

In TP5 gibt es drei Methoden für den Datenbankzugriff:

  1. Native SQL-Anweisung.

Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
Nach dem Login kopieren
  1. Abfragekonstruktor

Informationen zur Datenbank- und Modellnutzung von ThinkPHP5

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();
Nach dem Login kopieren
相同的查询操作,先后顺序有影响。
$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();
Nach dem Login kopieren
  1. 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);
Nach dem Login kopieren

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

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

CURD-Operation des Modells

Erstellen

Datenbanknutzung:

Db::table('user')->insert([    'name' => 'spawn',    'email' => '123@qq.com'])
Nach dem Login kopieren

Modellnutzung:

$user = new User;$user->save([    'name' => 'spawn',    'email' => '123@qq.com'])$user = User::create([    'name' => 'sapwn',    'email' => '123@qq.com'])
Nach dem Login kopieren

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

Modell:

$user = User::get(1);
Nach dem Login kopieren

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'])
Nach dem Login kopieren

Modell:

$user = User::get(1);$user->save([    'name' => 'haha',    'email' => 'heihei@qq.com'])

或者 

User::update([    'name'  => 'topthink',    'email' => 'topthink@qq.com',
], ['id' => 1]);
Nach dem Login kopieren

Zusammenfassung:

Methode Funktion Rückgabewert
speichern Daten aktualisieren Anzahl der betroffenen Datensätze
aktualisieren Daten aktualisieren (statisch) Modellobjektinstanz zurückgeben

需要注意的是,模型的更新操作是只更新有变化的数据。性能比较好。
Nach dem Login kopieren

Löschen

Db:

Db::table('user')->delete(1);
Nach dem Login kopieren

Modell:

$user = User::get(1);$user->delete();
或者
User::destory(1);
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
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