Analysieren Sie die neu hinzugefügte virtuelle Modellfunktion von ThinkORM

Freigeben: 2021-08-09 09:16:42
nach vorne
2345 Leute haben es durchsucht

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()
    {
        // 业务逻辑代码
    }
}
Nach dem Login kopieren

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=>&#39;删除&#39;,0=>&#39;禁用&#39;,1=>&#39;正常&#39;,2=>&#39;待审核&#39;];
        return $status[$value];
    }
    public function setNameAttr($value)
    {
        return strtolower($value);
    }
    public function blog()
    {
        return $this->hasMany(&#39;Blog&#39;);
    }
}
Nach dem Login kopieren

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 = [
    &#39;id&#39;      =>    8,
    &#39;name&#39;    =>    &#39;Think&#39;,
    &#39;status&#39;  =>    1,
];
$user = User::create($data);
// 获取数据 (支持获取器)
echo $user->name; // 输出 think
// 修改数据 (支持修改器)
$user->name = &#39;ThinkPHP&#39;; // 实际数据变成 thinkphp
// 保存数据到内存 并且调用模型事件
$user->save();
// 获取关联博客数据
$blog = $user->blog()->limit(3)->select();
// 删除数据(同时删除关联博客数据)
$user->together([&#39;blog&#39;])->delete();
Nach dem Login kopieren

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

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!

Verwandte Etiketten:
Quelle:thinkphp
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!