我想在我的数据库中进行的每次更新时触发一个函数。例如,我可以在Yii-activeRecord中使用afterSave()
,但如何在command builder
中使用它?如何在执行命令后运行方法?
也许我创建了一个类来扩展CDbCommand
并覆盖execute
方法,如:
public function execute($params=array())
{
parent::execute($params);
$this->afterExecute();
}
但我不知道该把它放在哪里
答案 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');
}
}
?>