Doctrine(Silex)无法保存数据,没有错误

时间:2017-01-10 21:00:58

标签: doctrine silex flush persist

我在尝试使用doctrine保存数据时遇到了麻烦。我不明白为什么,但我可以从数据库中获取数据,但我无法更新/插入/删除。

我正在使用带有 perist() flush()函数的entityManager。

我在谷歌搜索问题可能但我找不到任何东西。

function editPage($id, Request $request, Application $app) {
$data = array('id' => 0);
if ($id != 0) { // existing page
    $page = $app['em']->find('BLOG\\Models\\Page', $id); // get the page
    $data = array(
        'titre'     =>  $page->getTitle(),
        'slug'      =>  $page->getSlug(),
        'contenu'   =>  $page->getContent(),
        'id'        =>  $id
    );
}

$form = $app['form.factory']->createBuilder(FormType::class, $data)
    ->setAction($app['url_generator']->generate('adminPageEdit', array('id' => $id)))
    ->setMethod('POST')
    ->add('titre')
    ->add('slug')
    ->add('contenu', 'textarea')
    ->add('id', 'hidden')
    ->add('Envoyer', 'submit')
    ->getForm();

$form->handleRequest($request);

if ($form->isValid()) {
    $data = $form->getData();

    if($id != 0) { // existing page
        $page->setTitle($data['titre']);
        $page->setSlug($data['slug']);
        $page->setContent($data['contenu']);
    }
    else {
        $page = new Page(
            $data['titre'],
            $data['slug'],
            $data['contenu']
        );
    }

    $app['em']->persist($page);
    $app['em']->flush();

    $app['session']->getFlashBag()->add('flash', 'Page validée!');
    return $app->redirect($app['url_generator']->generate('adminPagesList'));
}

    return $app['twig']->render('admin/editPage.twig', array('form' => $form->createView()));
}

当我尝试使用表单时,绝对没有修改,但是我得到了flash消息,即使我在重定向之前有一个 die();

我希望有人可以帮我找到问题。

问候。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案,很简单,只需使用var $ app ['em']就可以使用entityManager函数find(),但是你不能坚持使用它。所以唯一要做的就是将这个var放在另一个var中,它会起作用。 所以解决方案是:

$em = $app['em'];
$em->persist($something);
$em->flush();

而不是直接使用: $应用[ '时间'] - >坚持($东西);