Home > Article > Backend Development > YII dynamic model (dynamic table name) supports analysis, yii model_PHP tutorial
This article analyzes the YII dynamic model (dynamic table name) support mechanism. Share it with everyone for your reference, the details are as follows:
Add dynamic model support to YII framework
The data model in the Yii framework uses a static mechanism. If you want to use the model method to operate a certain data table, you must create a model class corresponding to the data table in advance (located in the protected/models directory). In this way, there are This brings some inconvenience to our work, such as only displaying the data table, or the data table is dynamically generated, or it is necessary to realize the separation of reading and writing in the data table model, (such as data writing and data presentation logic May be defined in different models to improve performance, such as separation of front and back).
In order to solve this problem, after repeated debugging, I have extended dynamic data table model support for Yii. When using it, simply provide the table name and you can operate it as an ordinary data table model. Of course, it brings The problem is that there is no data verification. Even so, it brings great convenience to data display. If you have any questions during use, you can contact the author at zhangxugg@163.com at any time for discussion or to obtain the source code.
The processing method is as follows:
Please place the DbTable.php I provided in the protected/models/ directory, and then you can use it anywhere.
Generate new record:
$memo = new DTable('{{memo}}'); $memo->msg = 'this is content'; $memo->save(); //last insertid echo $memo->id ;
Read existing records:
$memo = DTable::model('{{memo}}')->findByPk(12); $memo->msg = "modefid content"; $memo->save(); //使用非默认数据库,需要在 config/main.php 文件中定义数据库连接,如: 'components' => array( 'db-other'=>array( 'class' => 'CDbConnection', 'connectionString' => 'mysql:host=localhost;dbname=cdcol;charset=utf8', 'username' => 'root', 'password' =>'', 'tablePrefix' => '', 'autoConnect' => false, ), ); DTable::$db = Yii::app()->getComponent('db-other'); $memo = DTable::model('{{memo}}')->findByPk(12);
Dynamic model supports for Yii framework 1.1.10
/** * DTable class file. * @author zhangxugg@163.com * @since Yii 1.1.10 * @package application.models * @version $Id DTable.php 1 2012-03-24 23:29 $ DTable provides dynamic table model supports for some application entironment such as dynamic-generated database tables, or simple read actions. please contact zhangxugg@163.com for the source code. new record : $model = new DTable('table_name'); //use table prefix: $model = new DTable('{{table_name}}'); $model->id = $id; $model->name = 'zhangxugg@163.com'; $model->save(); update: $model = DTable::model('{{table_name}}') $model->name = 'zhangxugg@163.com' $model->save(); $list = $model->findAll(); use non-default database connection : DTable::$db = Yii::app()->getCompoments('db-extra'); tips : you must define the database connection informations in config/main.php 'components' => array( 'db-extra' => array( 'class' => 'CDbConnection', 'connectionString' => 'mysql:host=localhost;dbname=cdcol;charset=utf8', 'username' => 'root', 'password' =>'', 'tablePrefix' => '', 'autoConnect' => false, ), ) DTable source code : class DTable extends CActiveRecord { private static $tableName ; public function __construct($table_name = '') { if($table_name === null) { parent::__construct(null); } else { self::$tableName = $table_name ; parent::__construct(); } } public static function model($table_name='') { self::$tableName = $table_name ; return parent::model(__CLASS__); } public function tableName() { return self::$tableName; } } */
Readers who are interested in more Yii-related content can check out the special topics on this site: "Introduction to Yii Framework and Summary of Common Techniques", "Summary of Excellent PHP Development Framework", "Basic Tutorial for Getting Started with Smarty Templates", "php Date and Time" Usage Summary", "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" and "php common database operation skills summary"
I hope this article will be helpful to everyone’s PHP program design based on the Yii framework.