Php 检查记录是否已成功插入Symfony2
如何使用symfony2中的条令检查记录是否成功插入数据库 我在控制器中的操作是Php 检查记录是否已成功插入Symfony2,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,如何使用symfony2中的条令检查记录是否成功插入数据库 我在控制器中的操作是 public function createAction(){ $portfolio = new PmPortfolios(); $portfolio->setPortfolioName('Umair Portfolio'); $em = $this->getDoctrine()->getEntityManager(); $em->persist($portf
public function createAction(){
$portfolio = new PmPortfolios();
$portfolio->setPortfolioName('Umair Portfolio');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($portfolio);
$em->flush();
if(){
$this->get('session')->setFlash('my_flash_key',"Record Inserted!");
}else{
$this->get('session')->setFlash('my_flash_key',"Record notInserted!");
}
}
我应该在
if
语句中写什么?您可以将控制器包装在try/catch
块中,如下所示:
public function createAction() {
try {
$portfolio = new PmPortfolios();
$portfolio->setPortfolioName('Umair Portfolio');
$em = $this->getDoctrine()->getEntityManager();
$em->persist($portfolio);
$em->flush();
$this->get('session')->setFlash('my_flash_key',"Record Inserted!");
} catch (Exception $e) {
$this->get('session')->setFlash('my_flash_key',"Record notInserted!");
}
}
如果插入失败,将抛出并捕获异常。您可能还希望通过调用
$e->getMessage()
和/或$e->getraceastring()
将错误消息记录在catch块中,这将解释异常情况。如何根据插入的成功与失败在视图中显示不同的div?使用不同的键(如setFlash)添加一条flash消息('insert_failed','Your message'),并在您的小树枝模板中执行类似{%if app.session.hasFlash('insert_failed')%%}{{app.session.flash('insert_failed')}{%endif%}的操作。也许您应该在catch块中调用entitymanager的回滚方法。据我所知,如果flush()失败,回滚将自动完成。