2017-08-03 4 views
0

私はEntity \ Announcement.phpとEntity \ Submission.phpという2つのモデルを持っています。私のエンティティ\ Submission.phpで整合性制約違反:1048 'announcement_id'列をnullにすることはできません

は、私はこのようなエンティティ\ Announcement.phpとの関係を定義した:

/** 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Announcement") 
* @ORM\JoinColumn(nullable=false) 
*/ 
protected $announcement; 

ユーザーがアナウンスを訪問するとき、彼らは提案を提出する能力を持っています。

/** 
* @Route("/submit/{id}", name="submissions_new") 
*/ 
public function submitAction(Request $request, Announcement $id) 
{ 
    $submission = new Submission(); 
    $submission->setAnnouncement($id); 

    $form = $this->createForm(SubmissionType::class); 

    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 

     $em = $this->getDoctrine()->getManager(); 

     $submission = $form->getData(); 

     $em->persist($submission); 
     $em->flush(); 

     return $this->redirectToRoute('announcements_list'); 
    } 

    return $this->render(':submissions:submit.html.twig', [ 
     'form' => $form->createView(), 
     'announcement' => $id->getId() 
    ]); 
} 

私は/私のルートから提出/ 73c67a07-744d-11e7-9670-08d40c1d4f7fを提出しようと、私はこのエラーを取得:

私のコントローラで

は、私はこのような送信アクションを定義しました私が手

//$submission = $form->getData(); 

と再提出しようと、私は私のコントローラで、この行をコメント

An exception occurred while executing 'INSERT INTO reports (id, title, date, author, description, announcement_id) VALUES (?, ?, ?, ?, ?, ?)' with params ["ff28c231-7843-11e7-a72b-08d40c1d4f7f", "aaa", "2012-01-01 00:00:00", "aaa", "aaa", null]: 

Integrity constraint violation: 1048 Column 'announcement_id' cannot be null 

このエラー:

An exception occurred while executing 'INSERT INTO reports (id, title, date, author, description, announcement_id) VALUES (?, ?, ?, ?, ?, ?)' with params ["d12ea15b-7843-11e7-a72b-08d40c1d4f7f", null, null, null, null, "73c67a07-744d-11e7-9670-08d40c1d4f7f"]: 

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null 

すべてのフィールドを送信してもらえますか?

答えて

0
public function submitAction(Request $request, Announcement $id) 
{ 
    $form = $this->createForm(SubmissionType::class); 

    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 

     $em = $this->getDoctrine()->getManager(); 

     $formData = $form->getData(); 

     $submission = new Submission(); 
     $submission->setAnnouncement($id); 
     //to fill the $submission with data from forms 
     //$submission->setTitle($formData['title']); 
     //........... 

     $em->persist($submission); 
     $em->flush(); 

     return $this->redirectToRoute('announcements_list'); 
    } 

    return $this->render(':submissions:submit.html.twig', [ 
     'form' => $form->createView(), 
     'announcement' => $id->getId() 
    ]); 
} 
0

が本当にあなたの$のIDで、あなたのデータベースを持っているオブジェクトですありがとう!

/** 
* @Route("/submit/{id}", name="submissions_new") 
*/ 

public function submitAction(Request $request, int $id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $submission = new Submission(); 

    $announcement = $em->getRepository(Announcement::class)->find($id); 

    if (!$announcement) { 
     return $this->redirectToRoute('announcements_list'); 
    } 

    $submission->setAnnouncement($announcement); 

    $form = $this->createForm(SubmissionType::class, $submission); 

    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 

     $em->persist($submission); 
     $em->flush(); 

     return $this->redirectToRoute('announcements_list'); 
    } 

    return $this->render(':submissions:submit.html.twig', [ 
     'form' => $form->createView(), 
     'announcement' => $announcement->getId() 
    ]); 
} 
関連する問題