2017-02-15 44 views
1

我想在執行捕捉異常:

try { 
    $em->remove($education); 
    $em->flush(); 
} catch(PDOException $e) { 
    var_dump($e->getMessage()); 
    die; 
} 

我也試過\Exception\Doctrine\ORM\ORMException,但沒有一次成功。

相反傾銷異常消息我得到我試圖避免受涼異常同樣的錯誤:

[3/3] ForeignKeyConstraintViolationException:執行發生異常 '?DELETE FROM trainee_education WHERE ID ='與 PARAMS [2]:

SQLSTATE [23000]:完整性約束違規:1451不能刪除或 更新父行,外鍵約束失敗 (trainingexperienceinternship,約束FK_10D1B00C2CA1BD71 外鍵(education_id)引用。 trainee_educationid))

我知道爲什麼我的約束失敗,沒有新的東西。但我想要得到一個異常,所以我可以通知用戶他不能刪除一個對象,他之前用它來創建關係。

+0

異常說它的名字是'ForeignKeyConstraintViolationException'而不是'PDOException',你確定第一個擴展了第二個嗎?你應該嘗試捕獲'ForeignKeyConstraintViolationException'並參閱。或者確保嘗試捕獲異常,那麼你可以找出拋出哪個類作爲異常 – smarber

+0

@smarber \ Exception也不起作用,這就是爲什麼我在這裏問了一個問題。謝謝你的意見,我會嘗試,並會讓你知道。 –

回答

4

我有同樣的情況,但我\主義\ DBAL \ DBALException

try{ 

     $em->persist($question); 
     $em->flush(); 
} catch (\Doctrine\DBAL\DBALException $e) { 

     $exception_message = $e->getPrevious()->getCode(); 
    return $this->render('AppBundle:Errors:error.html.twig', array('error' => $exception_message)); 

} 

我不知道,如果是最好的解決辦法,但工程工作。

+0

這工作完美,謝謝! –