> 백엔드 개발 > PHP 튜토리얼 > YII动态模型(动态表名)支持分析,yii模型_PHP教程

YII动态模型(动态表名)支持分析,yii模型_PHP教程

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-12 08:55:13
원래의
1185명이 탐색했습니다.

YII动态模型(动态表名)支持分析,yii模型

本文分析了YII动态模型(动态表名)支持机制。分享给大家供大家参考,具体如下:

给YII 框架增加动态模型支持

Yii框架中的数据模型使用静态机制,如果要使用模型方式操作某张数据表,就必须得事先创建数据表对应的模型类(位于 protected/models 目录下),这种方式,在有的情况下给我们的工作带来了一些不便,如仅仅将数据表进行显示,或者数据表是动态生成的,或者要实现数据表模型中的读写分离,(如数据写入与数据呈现逻辑可能定义到不同的模型中,以提高性能,如前后台的分离)。

为解决这个问题,经过我反复调试,已经为Yii 扩展出了动态数据表模型支持,使用时简单提供表名,即可将其当作普通的数据表模型进行操作,当然带来的问题就是无数据验证。即使是这样,也给数据显示带来极大的方便。如果在使用的过程中有任何问题,可随时联系笔者信箱 zhangxugg@163.com 进行探讨或索取源码。

处理方法如下:

请将我提供的DbTable.php 放置到 protected/models/ 目录下,然后就可以在任何位置使用之。

产生新记录:

1

2

3

4

5

$memo = new DTable('{{memo}}');

$memo->msg = 'this is content';

$memo->save();

//last insertid

echo $memo->id ;

로그인 후 복사

读取已有记录:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

/**

* 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;

}

}

*/

로그인 후 복사

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • PHP的Yii框架中过滤器相关的使用总结
  • PHP的Yii框架中View视图的使用进阶
  • 详解PHP的Yii框架中的Controller控制器
  • Yii数据库缓存实例分析
  • Yii框架上传图片用法总结
  • Yii开启片段缓存的方法
  • 详解PHP的Yii框架中组件行为的属性注入和方法注入
  • 详解在PHP的Yii框架中使用行为Behaviors的方法
  • 深入讲解PHP的Yii框架中的属性(Property)
  • 解读PHP的Yii框架中请求与响应的处理流程
  • YII Framework的filter过滤器用法分析

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1117086.htmlTechArticleYII动态模型(动态表名)支持分析,yii模型 本文分析了YII动态模型(动态表名)支持机制。分享给大家供大家参考,具体如下: 给YII 框架增加动...
관련 라벨:
yii
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿