给YII
框架增加动态模型支持
Yii框架中的数据模型使用静态机制,如果要使用模型方式操作某张数据表,就必须得事先创建数据表对应的模型类(位于
protected/models
目录下),这种方式,在有的情况下给我们的工作带来了一些不便,如仅仅将数据表进行显示,或者数据表是动态生成的,或者要实现数据表模型中的读写分离,(如数据写入与数据呈现逻辑可能定义到不同的模型中,以提高性能,如前后台的分离)。
为解决这个问题,经过我反复调试,已经为Yii
扩展出了动态数据表模型支持,使用时简单提供表名,即可将其当作普通的数据表模型进行操作,当然带来的问题就是无数据验证。即使是这样,也给数据显示带来极大的方便。如果在使用的过程中有任何问题,可随时联系笔者信箱
zhangxugg@163.com
进行探讨或索取源码。
处理方法如下:
请将我提供的DbTable.php
放置到
protected/models/
目录下,然后就可以在任何位置使用之。
产生新记录:
$memo = new DTable('{{memo}}');
$memo->msg = 'this is content';
$memo->save();
//last insertid
echo $memo->id ;
读取已有记录:
$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;
}
}
*/
相关推荐
在本文中,将介绍YII框架中动态模型(动态表名)的支持机制,这是为了解决直接操作数据表时出现的限制,并提供一种更灵活的数据模型操作方式。在传统的YII框架中,数据模型采用静态机制,对于每张数据表都必须事先...
在某些情况下,我们可能需要动态地获取数据库中的表名,尤其在数据库结构不确定或者需要频繁切换不同数据库时。本文将详细介绍如何在Yii框架中实现这一功能。 首先,我们需要了解Yii的数据库访问层(DB Access ...
- 按照提示输入模型的相关信息,例如模型名称、数据库表名等。 - 生成完成后,模型类会自动保存到相应的目录下。 4. **生成CRUD**: - 在gii工具中选择“生成CRUD”选项。 - 输入模型类的命名空间。 - 根据...
- 保存并刷新Gii管理界面,选择`crud`生成器,填写相应的模型类名和表名。 - 在生成代码时,Gii会使用你指定的中文模板生成代码。生成的代码中,表单元素的提示和按钮文字应已经显示为中文。 4. 考虑到多语言支持...
其中,Model(模型)是Yii框架的三大主要组件之一(另外两个是View视图和Controller控制器),模型通常用于处理数据和业务逻辑。...掌握Yii模型的创建和使用,对于使用Yii框架开发Web应用来说是基础且重要的技能。
- **实现方式**:配置Eclipse PDT以支持Yii框架的代码补全、快速导航等功能。 ##### 10. 启用Gzip压缩 - **知识点**:了解如何在Yii应用中启用Gzip压缩功能。 - **实现方式**:通过修改`.htaccess`文件或Web...
2. **生成模型**:在GII中选择模型生成器,输入`users`作为表名,生成`User`模型类。模型类将包含对数据库表的操作方法。 3. **生成控制器**:接着生成控制器,选择`CRUD`模板,指定`User`模型。GII会自动创建`...
在YII中,如果想直接关联其他表进行查询的话,需要先在模型里定义它们的关联 Order class Order extends \yii\db\ActiveRecord.{ // 关联函数以get+要关联的数据表名来命名 // 这是获取下订单的客户 public ...
7. **Yii操作数据库**:Yii2提供了ActiveRecord模式,通过模型类可以直接操作数据库,动态获取表名可以通过`tableName()`方法实现。 8. **分类下的所有子类获取**:在Yii2的ActiveRecord模型中,可以通过关联查询...
在Yii框架中,模型层代表应用程序的业务逻辑和数据模型。对于用户注册而言,开发者需要创建一个与用户数据表对应的模型类,该模型类继承自CActiveRecord。在模型层需要定义数据表名称、属性标签、数据验证规则等。 ...
在这个类中,我们定义了表名、字段、数据验证规则以及模型之间的关联关系。例如,模型中的'relationType'关联指向关系类型模型SocialRelationType,'user'和'anotherUser'关联指向用户模型AccessUser。通过这些关联...
Yii2框架支持多种数据操作方式,其中批量插入数据的方式主要是通过`batchInsert`方法实现。这种方法相比逐条插入数据来说,效率更高,因为它减少了与数据库的交互次数,降低了资源消耗。 在Yii2中进行批量插入数据...
Yii2 Sortable小部件 Yii2小部件的实现Rubaxa / Sortable。 支持的: GridView小部件。用法创建一个新的迁移,从扩展名将父类更改为迁移类,并指定表名属性: class m140811_131705_Models_order extends \...
Yii2框架通过配置文件main.php和params.php来支持多数据库配置。在main.php中配置数据库连接信息和权限管理器,而在params.php中配置业务相关的表位置。下面将详细介绍配置步骤和相关知识点。 1. 配置多个数据库...
这些表可以通过执行Yii框架提供的schema.sql文件来创建,并需要确保表名与配置文件中的自定义表名一致。 RBAC的基本概念包括操作(Operations)、任务(Tasks)和角色(Roles)。操作是最基本的权限单位,不可再分...
当使用Yii框架进行Web开发时,首先需要创建一个与数据库表名相同的模型类。例如,如果数据库中存在一个名为user的表,则可以创建一个User模型类。模型类通常放置在models文件夹中,并继承自yii\db\ActiveRecord类。...
除了上述提到的增删改查操作,Yii2还支持更高级的数据库操作,比如事务处理。事务处理可以确保一组数据库操作要么全部成功,要么全部失败,这对于保证数据的完整性和一致性是非常重要的。 此外,Yii2还提供了Active...