Home  >  Article  >  Backend Development  >  YII dynamic model (dynamic table name) supports analysis, yii model_PHP tutorial

YII dynamic model (dynamic table name) supports analysis, yii model_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:55:131082browse

YII dynamic model (dynamic table name) support analysis, yii model

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.

Articles you may be interested in:

  • Summary of the use of filters in PHP's Yii framework
  • Advanced use of Views in PHP's Yii framework
  • Detailed explanation of the Controller controller in PHP's Yii framework
  • Yii database cache instance analysis
  • Summary of usage of uploading images in Yii framework
  • Yii method to enable fragment caching
  • Detailed explanation of attribute injection and method injection of component behavior in PHP's Yii framework
  • Detailed explanation of how to use behavioral Behaviors in PHP's Yii framework
  • In-depth explanation of PHP's Yii framework Property (Property)
  • Interpretation of the request and response processing flow in PHP's Yii framework
  • YII Framework filter usage analysis

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1117086.htmlTechArticleYII dynamic model (dynamic table name) supports analysis, yii model This article analyzes the YII dynamic model (dynamic table name) Support mechanisms. Share it with everyone for your reference, the details are as follows: Add animation to the YII framework...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn