簡體   English   中英

將數據持久保存到數據庫。 堅持不工作

[英]Persisting data to database. persist not working

我編寫了一個控制器操作,該操作應該在數據庫中添加一個元素(會議),它是:

public function newAction(Request $request){
    $meeting = new Meeting();
    $meetingUser = new MeetingUser();
    $project = new Project();
    $projectName = "SocialPro";//$request->get('projectName');
    echo($projectName);
    $users = $this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findProjectUser($projectName);
    //$form = $this->createForm('SocialPro\MeetingBundle\Form\MeetingType', $meeting);
    //$form->handleRequest($request);
    //if ($form->isSubmitted() && $form->isValid()) {
    $userconn = $this->container->get('security.token_storage')->getToken()->getUser();
    echo($userconn->getId());
    if ($request->isMethod('POST')) {
        echo("message form");
        $role = $this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findUserRole($userconn)[0]['role'];
        $date = $request->get('date');
        if ($role == "PROJECT_MASTER" || $role == "TEAM_MASTER") {
            for ($i = 0; $i < count($users); $i++) {
                $meetings = $this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findMeetingUser($users[$i]['id'], $date);
            }
            if ($meetings == null || count($meetings) == 0) {
                $project = $this->getDoctrine()->getRepository('SocialProProjectBundle:Project')->findBy(array("name" = >$projectName));
                $meeting->setDescription($request->get('description'));
                $meeting->setDate(new \DateTime($request->get('date')));
                $meeting->setTime($request->get('time'));
                $meeting->setProjectName($request->get('projectName'));
                $meeting->setProject($project[0]);


                $meetingUser->setMeetings($meeting);
                $meetingUser->setUsers($userconn);
                var_dump($meetingUser);
                $meeting->setMeetingUser(array($meetingUser));
                //$project->setMeetings($meeting->getId());
                $em = $this->getDoctrine()->getManager();

                $em->persist($meeting);
                $em->persist($meetingUser);
                $em->flush();
                // $meetingUser->setUsers($request->get(''));
                return $this->redirectToRoute('reunion_show', array('id' = > $meeting->getId()));
            }
            else {
                echo("Membre indisponible");
            }
        }
        else {
            echo("Must be MASTER to create meeting");
        }
    }
    return $this->render('SocialProMeetingBundle::ajoutMeeting.html.twig', array('users' = >$users));
    // $em = $this->getDoctrine()->getManager();
    //$em->persist($meeting);
    //$em->flush($meeting);

    // return $this->redirectToRoute('meeting_show', array('id' => $meeting->getId()));
    //}

    //return $this->render('SocialProMeetingBundle:ajouMeeting', array(
    //  'meeting' => $meeting,
    //'form' => $form->createView(),
    //));
}

當我提交表格時,它給了我一個網站不可用的頁面。 我逐行進行了測試,一切運行正常。 原來問題出在

$em->persist($meeting);

而且我不知道如何解決它。

您必須在調用持久化后立即調用flush,如下所示:

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

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

然后它將同時存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM