这个功能主要用在这里,就是当发现要使用的库中有同样的表名的时候,又不想改动已存在的系统的表名,也不想改动要加入的系统的表名。如果能增加一个表前缀的功能,会解决这个需求。
这个功能主要用在这里,就是当发现要使用的库中有同样的表名的时候,又不想改动已存在的系统的表名,也不想改动要加入的系统的表名。如果能增加一个表前缀的功能,会解决这个需求。
我是自己写继承类来实现表前缀功能的
首先在config文件中添加:
<?php return array( "params" => array( "dbPrefix" => "e_", ), ); ?>
然后添加类继承CActiveRecord:
<?php class EActiveRecord extends CActiveRecord { public $prefix; public function __construct($attributes = array(), $scenario = "") { parent::__construct($attributes, $scenario); $this->prefix = Yii::app()->params->dbPrefix; } public function tableName() { // return table name with prefix return $this->prefix . get_class($this); } } ?>
如果想使用rbac功能的话,还需要写类继承CDbAuthManager:
<?php class EDbAuthManager extends CDbAuthManager { public function init() { $prefix = Yii::app()->params->dbPrefix; $this->itemTable = $prefix . $this->itemTable; $this->itemChildTable = $prefix . $this->itemChildTable; $this->assignmentTable = $prefix . $this->assignmentTable; parent::init(); } } ?>
这个方法不错啊!
Quote
太好了,我正在想加表前缀的问题,这个方法不错,能不能加到Yii Core里面?
Quote
首先在config文件中添加:
…
你好,我是yii初学者,请问写好的类继承文件如何放置?
可以放在protected/components
Quote
文件名称就是EActiveRecord.php吗?config里面还需要设置别的参数吗?除了
"params" => array(
"dbPrefix" => "e_",
),
以外
Quote
Quote
文件名称就是EActiveRecord.php吗?config里面还需要设置别的参数吗?除了
"params" => array(
"dbPrefix" => "e_",
),
以外
不错,我就借用了这个方法,你只需要在configuration中定义了:
就可以用了,当然所有需要前缀的表都需要继承自EActiveRecord类。
谢谢各位了啊,还是期待强哥把表前缀发布在以后的版本中。
确实不错~
Good job!
谢谢qiang,之前跟你讨论过这个问题,好多空间商都只提供一个数据库。现在能有官方解决方式就太好了
希望yiic 工具也能直接使用
另外,希望yii能够在1.1出一个比较稳定而精简的版本。然后暂时多花费心思在文档的完善以及初学者的培训上。因为只有更多的学习
者能够完整的掌握yii的特性之后,才能从项目开发中提出更为完整的需求和改进建议。
现在在文档部分由的地方还不够完善。许多功能和使用方法没有标准的解决方案。希望在你之前提到的cms例子中有所体现。