Search code examples
phpsymfonydoctrine-ormentity

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


I have two models : Entity\Announcement.php and Entity\Submission.php.

In my Entity\Submission.php, I defined a relation with Entity\Announcement.php like this :

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

When users visit an Announcement they have the ability to submit a proposal.

In my controller, I defined the submit action like this :

/**
 * @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()
    ]);
}

When I try to submit from my route /submit/73c67a07-744d-11e7-9670-08d40c1d4f7f, I get this error :

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

When I comment this line in my controller :

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

and try to submit again, I get this error :

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

Could you please help to submit all fields ?

Thank you


Solution

  • 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()
        ]);
    }