2016-10-30 78 views
0

我得到错误“SQLSTATE [HY093]:无效参数号”,当我尝试运行以下功能:SQLSTATE [HY093]:无效的参数号:无参数的约束

public function showAction(Post $post, Request $request){ 

    $comment = new Comment(); 
    $comment->setPost($post); 

    //comment->setUser($user); 

    $form = $this->createForm(CommentType::class, $comment); /*obiekt formularza */ 
    $form->handleRequest($request); 


    if($form->isValid()){ 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($comment); 
     $em->flush('success', 'Komentarz został pomyślnie dodany'); 

     $this->addFlash(); 

     return $this->redirectToRoute('post_show', array('id' =>$post->getId())); 
    } 


    return $this->render('default/show.html.twig', array(
     'post' => $post, 
     'form' => $form->createView() 
    )); 
} 

我CommentTye形式:

class CommentType extends AbstractType 
{ 
/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('content', \Symfony\Component\Form\Extension\Core\Type\TextareaType::class, array(
      'label' => false, 
      'attr' => array('placeholder' => 'Treść komentarza') 
     )) 
     ->add('createdAt') 
     ->add('post') 
     ->add('user') 
     ; 
} 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'AppBundle\Entity\Comment' 
    )); 
} 

/** 
* @return string 
*/ 
public function getName() 
{ 
    return 'appbundle_comment'; 
} 
} 

当我运行它,我得到

Message: An exception occurred while executing 'INSERT INTO comment (content, created_at, post_id, user_id) VALUES (?, ?, ?, ?)': 

SQLSTATE [HY093]:无效参数号:没有参数分别为:b ound

请帮我解决这个问题

+0

请修复代码块在你的问题(使用4空间缩进代码) - 这是不可读这样。 – nifr

+0

对不起,这是我的第一篇文章。 – Aga95

+0

尝试调用'$ em-> flush()'不带参数。其实第一个也是唯一的参数是'$ entity',你不应该在那里提供'成功'。 –

回答

0

你混淆了冲洗荷兰国际集团的实体管理器和添加闪光灯消息。

相反的:

$em->flush('success', 'Komentarz został pomyślnie dodany'); 
$this->addFlash(); 

你想:

$em->flush(); 
$this->addFlash('success'); 
$this->addFlash('Komentarz został pomyślnie dodany'); 
+0

谢谢!有用! – Aga95

+0

我处于相同的情况:您能解释为什么混合闪烁消息和冲洗操作会导致此异常?因为我这样做是为了保存消息的数据库版本并在页面重新加载后立即显示它。我想知道原因。谢谢! – Aerendir

+0

如果flash消息存储在会话中并且'flush'操作在数据库上运行,那么两者之间的关系是什么? – Aerendir

相关问题