2013-03-14 9 views
0

我已經得到了下面的模型類:Symfony的1.4更新前的方法從來沒有射擊

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"; 
    } 
} 

我想是運行「updateContractDetailsByConId」法行被更新之前的一些代碼。從我的調查中,我應該能夠使用內置掛鉤,即preUpdate 但preUpdate方法從不運行。

任何想法爲什麼不呢?

回答

2

當您從DQL查詢更新時,您需要掛鉤到DQL回調。有關更多信息,請參閱documentation here

在你的代碼

,你需要更新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); 
} 
+0

這就是它,非常感謝。我認爲,如果即時通過模型的對象直接更新,我會使用preUpdate?準確地說,是 – Trevelyan005 2013-03-14 15:24:35

+0

@ Trevelyan005。你可以創建一個'updateHook'函數,如果它們做同樣的事情,就可以從兩者中調用它。 – jaudette 2013-03-14 19:34:47

相關問題