执行命令后的Yii自动调用功能,如活动记录中的afterSave

时间:2014-08-21 12:33:27

标签: php mysql yii

我想在我的数据库中进行的每次更新时触发一个函数。例如,我可以在Yii-activeRecord中使用afterSave(),但如何在command builder中使用它?如何在执行命令后运行方法?

也许我创建了一个类来扩展CDbCommand并覆盖execute方法,如:

public function execute($params=array())
{
    parent::execute($params);
    $this->afterExecute();
}

但我不知道该把它放在哪里

1 个答案:

答案 0 :(得分:1)

您可以通过编写扩展CDbCommand的组件来处理此问题。您可以将组件存储在" / protected / components"中,这将符合Yii标准。您需要做的就是使命令DB-part扩展CDbCommandExtension。我为你做了那件事:

<?php
/**
 * CDbCommandExtension component 
 *
 * @author lin
 *
 */
class CDbCommandExtension extends CDbCommand {

    ############################################ Class vars ############################################    


    ############################################ Class methods ############################################


    /**
     * On init, init parent
     */
    public function init(){

        //Pattern call
        parent::init();
    }


    /**
     * Override execute mehtod in parent class
     * 
     * (non-PHPdoc)
     * @see CDbCommand::execute()
     */
    public function execute($params=array())
    {
        parent::execute($params);
        $this->afterExecute();
    }


    /*
     * after exectue function
     */
    public function afterExecute() 
    {
        die('after execute');
    }
}
?>