如何扩展cactiverecord

时间:2013-04-18 08:23:12

标签: yii model extends

我想在CActiveRecord中添加aditional方法,但如果class Project_Model extends CActiveRecord {}出错

  

在数据库中找不到活动记录类“Project_ActiveRecord”的表“Project_ActiveRecord”。

我想创建简单的结构:CActiveRecord-> Project_ActiveRecord(只扩展方法) - >表(真实表)。

怎么办呢?

1 个答案:

答案 0 :(得分:0)

错误很明显:您的数据库中没有名为Project_ActiveRecord的表格!

如果Project_Model将成为其他活动记录模型的基本模型,那么您应该执行以下操作:

//A base classe example that has a behavior shared by all the inherited class
abstract class Project_Model extends CActiveRecord
{

    public function behaviors(){
        return array(
            'CTimestampBehavior' => array(
                'class' => 'zii.behaviors.CTimestampBehavior',
                'setUpdateOnCreate' => true
            ),
        );
    }

}

然后你可以声明将在数据库中有一个表的另一个类

class YourClass extends Project_Model
{
    /**
     * Returns the static model of the specified AR class.
     * @param string $className active record class name.
     * @return Token the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return 'YourClassTable';
    }
    ...
}

然后你 shoudl永远不会调用类Project_Model (这就是为什么我把关键字abstract)放在你的代码中,你必须调用继承的类在db!中有一个现有的表