2016-10-30 5 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 운드,

날 당신은 혼합 한이

+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

플래시 메시지가 세션에 저장되고'flush' 연산이 데이터베이스에서 작동하면, 둘 사이의 관계는 무엇입니까? – Aerendir

관련 문제