Php Symfony 1.4预更新方法从不触发
我有以下模型类:Php Symfony 1.4预更新方法从不触发,php,doctrine,symfony-1.4,Php,Doctrine,Symfony 1.4,我有以下模型类: class ContractDetails extends BaseContractDetails { public function updateContractDetailsByConId($conId, $key, $value) { $q = Doctrine_Query::create() ->update('ContractDetails'); if ($value === null) {
class ContractDetails extends BaseContractDetails {
public function updateContractDetailsByConId($conId, $key, $value) {
$q = Doctrine_Query::create()
->update('ContractDetails');
if ($value === null) {
$q->set($key, 'NULL');
} else {
$q->set($key, '?', $value);
}
$q->where('cd_con_id = ?', $conId)
->execute();
return $q;
}
public function preUpdate($values) {
$test = "test";
}
}
我想要的是在更新“UpdateTractDetailsByConid”方法行之前运行一些代码。根据我的调查,我应该能够使用内置挂钩,即预更新
但是preUpdate方法从未运行过
知道为什么不吗?当您从DQL查询更新时,需要挂接到DQL回调。有关更多信息,请参阅 在代码中,您需要更新的
preUpdate
public function preDqlUpdate($values) {
$test = "test";
}
不要忘记,正如文档中提到的,您需要隐式地打开DQL回调。在ProjectConfiguration.class.php文件中,添加:
public function configureDoctrine(Doctrine_Manager $manager)
{
$manager->setAttribute(Doctrine::ATTR_USE_DQL_CALLBACKS, true);
}
就这样,非常感谢。我认为如果我直接通过模型的对象进行更新,我会使用preUpdate?@Trevelyan005。您可以创建一个
updateHook
函数,如果它们执行相同的操作,则从这两个函数调用它。