首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展cactiverecord

如何扩展cactiverecord
EN

Stack Overflow用户
提问于 2013-04-18 08:23:11
回答 1查看 629关注 0票数 0

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

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

我希望创建简单的结构:CActiveRecord->Project(只扩展方法)->Table(实表)。

怎么能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-18 08:52:31

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

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

代码语言:javascript
复制
//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
            ),
        );
    }

}

然后,您可以声明另一个类,即将在db中有一个表。

代码语言:javascript
复制
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';
    }
    ...
}

那么您应该永远不要在代码中调用类Project_Model (这就是为什么我将关键字abstract),您必须调用继承的类,其中在db中有一个现有的表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16077927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档