3

我正在YII使用MSSQL

CMssqlCommandBuilder尝试使用分页时出现问题。我使用了 http://code.google.com/p/yii/issues/detail?id=1501 中给出comment#7代码

我编辑了CMssqlCommandBuilder,我的代码运行良好。

现在的问题是我不想更改我想扩展一个类并使用该类的类YiiCMssqlCommandBuilderCMssqlCommandBuilder

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

4

1 回答 1

1

覆盖getCommandBuilder()扩展 CActiveRecord 的基础模型类中的 。 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());
    }
}
于 2012-11-01T16:20:18.100 回答