Dieser Artikel wird von der Tutorial-Kolumne thinkphp-Framework bereitgestellt, um die neu hinzugefügte virtuelle Modellfunktion von ThinkORM vorzustellen und zu analysieren. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
Die neueste Version von ThinkORM fügt eine virtuelle Modellfunktion hinzu. Diese Funktion ist in ThinkPHP Version 3.2 enthalten, aber die neue Version der virtuellen Modellfunktion ist leistungsfähiger.
Wenn bisher virtuelle Modelloperationen erforderlich waren, konnte die Modellklasse die Modellklasse nicht erben und dann ihre eigene Geschäftslogik kapseln. Obwohl sie einige Anforderungen erfüllen konnte, konnte sie keine Getter, Modifikatoren und modellbezogenen Funktionen implementieren, z als :
<?php namespace app\model; class User { public function getInfo() { // 业务逻辑代码 } }
Die neue Version konzentriert sich auf die Stärkung des virtuellen Modells. Daten können nur im Speicher gespeichert werden und Daten können nur durch Instanziierung erstellt werden. Das virtuelle Modell kann die meisten Funktionen des Modells beibehalten, einschließlich Getter und Modellereignisse Andererseits sind auch relevante Operationen für Unit-Tests bequemer.
Um ein virtuelles Modell zu verwenden, müssen Sie beim Definieren des Modells nur das virtuelle Merkmal einführen, zum Beispiel:
<?php namespace app\model; use think\Model; use think\model\concern\Virtual; class User extends Model { use Virtual; public function getInfo() { // 业务逻辑代码 } public function getStatusAttr($value) { $status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } public function setNameAttr($value) { return strtolower($value); } public function blog() { return $this->hasMany('Blog'); } }
Sie müssen keine entsprechende Benutzertabelle in der Datenbank haben, können aber dennoch zugehörige Datenoperationen ausführen. Hier sind einige einfache Beispiele.
// 创建数据 $data = [ 'id' => 8, 'name' => 'Think', 'status' => 1, ]; $user = User::create($data); // 获取数据 (支持获取器) echo $user->name; // 输出 think // 修改数据 (支持修改器) $user->name = 'ThinkPHP'; // 实际数据变成 thinkphp // 保存数据到内存 并且调用模型事件 $user->save(); // 获取关联博客数据 $blog = $user->blog()->limit(3)->select(); // 删除数据(同时删除关联博客数据) $user->together(['blog'])->delete();
Da das virtuelle Modell keine tatsächliche Datentabelle hat, können Sie keine Abfragevorgänge ausführen. Der folgende Code löst eine Ausnahme aus:
User::find(1); // 会抛出下面的异常 // virtual model not support db query
Beachten Sie, dass das virtuelle Modell die automatische Zeitstempelfunktion nicht unterstützt (aber immer noch). Wenn das Zeitfeld erforderlich ist, muss es bei der Instanziierung übergeben werden.
Wenn Sie Getter, Modifikatoren und Modellereignisse definieren, sind diese weiterhin gültig. Sie können sie testen, wenn Sie Zeit haben.
Verwandte Empfehlungen: Die neuesten 10 Thinkphp-Video-Tutorials
Das obige ist der detaillierte Inhalt vonAnalysieren Sie die neu hinzugefügte virtuelle Modellfunktion von ThinkORM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!