2010-08-05 65 views
0

我想測試一個對象是否在調用我的函數executeDelete後被刪除,以便在對象仍然在我的數據庫中時向用戶發送錯誤。symfony 1.4:問題方法isDeleted()

if ($logement->isDeleted()) { 
    $this->getUser()->setFlash('notice', 'Suppression du logement effectuée'); 
} 
else { 
    $this->getUser()->setFlash('error', 'Erreur lors de la suppression du logement'); 
} 

但我有一個錯誤:

Unknown method Logement::isDeleted 

我沒有找到如何使用這個方法,我認爲這是我的問題。

回答

1

您可能需要向我們展示更多代碼......但基本上您的方法不存在,您將不得不創建它。

我假設你在使用Doctrine。假設您正在刪除記錄,如下所示:

$lodgement->delete(); 

不是delete方法返回一個布爾值來指示成功/失敗嗎?所以,你可以簡單地做到以下幾點:

if ($lodgement->delete()) { 
    $this->getUser()->setFlash('notice', 'success'); 
} else { 
    $this->getUser()->setFlash('error', 'failure'); 
} 

編輯

如果你想實現一個isDeleted()方法,你可以使用postDelete()掛鉤。在你的模型類:

class Lodgement extends BaseLodgement 
{ 
    // add an 'isDeleted' property 
    protected $isDeleted = false; 

    // override the postDelete method 
    public function postDelete($values) 
    { 
     $this->isDeleted = true; 
    } 

    // define your own isDeleted method 
    public function isDeleted() 
    { 
     return $this->isDeleted;  
    } 
} 

然後,你可以這樣做:

$lodgement->delete(); 
echo $lodgement->isDeleted() ? 'notice' : 'error'; 
+0

好吧,我已經展示了一本關於行走方法,如請將isDeleted和isModified網站,我thounght這是同樣的事情主義。 我也顯示了一些關於isDeleted on Jobeet: http://www.symfony-project.org/book/1_0/08-Inside-the-Model-Layer 我想知道是否有一種方法知道更新是否正常工作? – Elorfin 2010-08-06 07:07:21

+0

確實..在Propel中有一個isDeleted()方法! 要檢查記錄是否被修改,可以使用state()方法檢查對象的狀態。它返回一個像STATE_CLEAN,STATE_DIRTY等定義的常量。 http://www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_record.html#STATE_CLEAN 至於檢查更新,保存( )不會返回值,它只會在失敗時引發異常,但您可以使用trySave(),它根據結果返回一個布爾值... 同樣,如果您想實現,還有一個postUpdate()掛鉤一些你自己的邏輯:) – 2010-08-06 09:06:25