违反完整性约束:1048 列 'announcement_id' 不能为空

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

我有两个模型:Entity\Announcement.php 和 Entity\Submission.php.

在我的 Entity\Submission.php 中,我定义了与 Entity\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()
    ]);
}

当我尝试从我的路线 /submit/73c67a07-744d-11e7-9670-08d40c1d4f7f 提交时,我收到此错误:

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

当我在我的控制器中评论这一行时:

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

然后再次尝试提交,我得到这个错误:

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

能否请您帮忙提交所有字段?

谢谢

您的 $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()
  ]);
}
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()
    ]);
}