Maison cadre php PensezPHP Analysez la fonction de modèle virtuel nouvellement ajoutée de ThinkORM

Analysez la fonction de modèle virtuel nouvellement ajoutée de ThinkORM

Aug 06, 2021 am 09:27 AM

Cet article est fourni par la colonne tutoriel thinkphp framework pour présenter et analyser la fonction de modèle virtuel nouvellement ajoutée de ThinkORM. J'espère qu'il sera utile aux amis dans le besoin !

La dernière version de ThinkORM ajoute une fonction de modèle virtuel. Cette fonction est apparue dans ThinkPHP version 3.2, mais la nouvelle version de la fonction de modèle virtuel est plus puissante.

Auparavant, si des opérations de modèle virtuel étaient nécessaires, la classe model ne pouvait pas hériter de la classe Model puis encapsuler sa propre logique métier. Bien qu'elle puisse répondre à certains besoins, elle ne pouvait pas implémenter de getters, de modificateurs et de fonctions liées au modèle, telles que. comme :

<?php
namespace app\model;
class User
{
    public function getInfo()
    {
        // 业务逻辑代码
    }
}
Copier après la connexion

La nouvelle version se concentre sur le renforcement du modèle virtuel. Les données ne peuvent être enregistrées qu'en mémoire, et les données ne peuvent être créées que par instanciation. Le modèle virtuel peut conserver la plupart des fonctions du modèle, y compris les getters et les événements de modèle. , et même les opérations d'association, d'un autre côté, sont également plus pratiques pour les tests unitaires.

Pour utiliser un modèle virtuel, il vous suffit d'introduire le trait Virtuel lors de la définition du modèle, par exemple :

<?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;);
    }
}
Copier après la connexion

Vous n'avez pas besoin d'avoir une table utilisateur correspondante dans la base de données, mais vous pouvez toujours effectuer des opérations de données associées. Voici quelques exemples simples.

// 创建数据
$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();
Copier après la connexion

Étant donné que le modèle virtuel n'a pas de table de données réelle, vous ne pouvez effectuer aucune opération de requête. Le code suivant lèvera une exception :

User::find(1);
// 会抛出下面的异常
// virtual model not support db query
Copier après la connexion

Notez que le modèle virtuel ne prend pas en charge la fonction d'horodatage automatique (mais prend toujours en charge la fonction d'horodatage automatique). formatage du champ horaire), si le champ horaire est requis, il doit être transmis lors de l'instanciation.

Si vous définissez des getters, des modificateurs et des événements de modèle, ils sont toujours valides. Vous pouvez les tester lorsque vous avez le temps.

Recommandations associées : Les 10 derniers didacticiels vidéo thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)