2016-10-30 8 views
0

私はエラーを取得しています "SQLSTATE [HY093]:無効なパラメータ番号" Iは、以下の機能を実行しようとすると: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

修正する助けてくださいフラッシュエンティティ・マネージャをINGのとフラッシュメッセージを追加します。

の代わりに:

$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

フラッシュメッセージがセッションに保存されていて、 'flush'操作がデータベース上で動作する場合、両方の関係はどちらですか? – Aerendir

関連する問題