Rumah > rangka kerja php > ThinkPHP > Analisis fungsi model maya ThinkORM yang baru ditambah

Analisis fungsi model maya ThinkORM yang baru ditambah

Lepaskan: 2021-08-09 09:16:42
ke hadapan
2440 orang telah melayarinya

Artikel ini diperkenalkan oleh rangka kerja thinkphp lajur tutorial untuk memperkenalkan dan menganalisis fungsi model maya ThinkORM yang baru ditambah, saya harap ia dapat membantu rakan yang memerlukan.

Versi terkini ThinkORM menambah fungsi model maya Fungsi ini telah muncul dalam ThinkPHP versi 3.2, tetapi versi baharu fungsi model maya lebih berkuasa.

Sebelum ini, jika operasi model maya diperlukan, kelas model tidak boleh mewarisi kelas Model dan kemudian merangkum logik perniagaannya sendiri Walaupun ia boleh memenuhi beberapa keperluan, ia tidak dapat melaksanakan pengambil, pengubah dan persatuan model. Fungsi, seperti:

<?php
namespace app\model;
class User
{
    public function getInfo()
    {
        // 业务逻辑代码
    }
}
Salin selepas log masuk

Versi baharu memfokuskan pada pengukuhan model maya Data hanya boleh disimpan dalam ingatan dan data hanya boleh dibuat melalui instantiasi Model maya boleh mengekalkan kebanyakan fungsi model , termasuk getter, acara model dan juga operasi yang berkaitan Sebaliknya, ia juga lebih mudah untuk ujian unit.

Untuk menggunakan model maya, anda hanya perlu memperkenalkan ciri Maya semasa mentakrifkan model, contohnya:

<?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;);
    }
}
Salin selepas log masuk

Anda tidak perlu mempunyai jadual pengguna yang sepadan dalam pangkalan data , tetapi anda masih boleh melakukannya Operasi data berkaitan, berikut ialah beberapa contoh mudah.

// 创建数据
$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();
Salin selepas log masuk

Memandangkan model maya tidak mempunyai jadual data sebenar, anda tidak boleh melakukan sebarang operasi pertanyaan Kod berikut akan mengeluarkan pengecualian:

User::find(1);
// 会抛出下面的异常
// virtual model not support db query
Salin selepas log masuk

Perhatikan bahawa model maya. tidak Menyokong fungsi cap masa automatik (tetapi masih menyokong pemformatan medan masa Jika medan masa diperlukan, ia perlu dihantar semasa instantiasi).

Jika anda mentakrifkan getter, pengubah suai dan acara model, ia masih sah, anda boleh mengujinya jika anda mempunyai masa.

Cadangan berkaitan: 10 tutorial video thinkphp terkini

Atas ialah kandungan terperinci Analisis fungsi model maya ThinkORM yang baru ditambah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:thinkphp
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan