如何扩展CMssqlCommandBuilder并在模型中使用扩展类

时间:2012-11-01 14:30:15

标签: yii

我将YIIMSSQL

一起使用

尝试使用分页时CMssqlCommandBuilder出现问题。 我在http://code.google.com/p/yii/issues/detail?id=1501

使用了comment#7中给出的代码

我编辑了CMssqlCommandBuilder,我的代码运行正常。

现在的问题是我不想更改Yii的{​​{1}}课程,我希望从CMssqlCommandBuilder扩展课程,而是使用该课程。

如何告诉我的模型类使用新的扩展类而不是CMssqlCommandBuilder

1 个答案:

答案 0 :(得分:1)

覆盖扩展CActiveRecord的基础模型类中的getCommandBuilder()http://www.yiiframework.com/doc/api/1.1/CActiveRecord#getCommandBuilder-detail

class MyActiveRecord extends CActiveRecord
{
    public function getCommandBuilder()
    {
        return new MyMssqlCommandBuilder($this->getDbConnection()->getSchema());
    }
}

不确定这是否是“正确的方法”。

我可能更适合做以下事情:

class MyActiveRecord extends CActiveRecord
{
    private $_builder;
    public function getCommandBuilder()
    {
        if($this->_builder!==null)
            return $this->_builder;
        else
            return $this->_builder = new MyMssqlCommandBuilder($this->getDbConnection()->getSchema());
    }
}