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() { // 业务逻辑代码 } }
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=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; return $status[$value]; } public function setNameAttr($value) { return strtolower($value); } public function blog() { return $this->hasMany('Blog'); } }
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 = [ '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();
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
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!