Database 将数据持久化到数据库。坚持不工作
我编写了一个控制器操作,应该向数据库添加一个元素(会议),如下所示:Database 将数据持久化到数据库。坚持不工作,database,symfony,Database,Symfony,我编写了一个控制器操作,应该向数据库添加一个元素(会议),如下所示: public function newAction(Request $request){ $meeting = new Meeting(); $meetingUser = new MeetingUser(); $project = new Project(); $projectName = "SocialPro";//$request->get('projectName'); ec
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(),
//));
}
我不知道如何修复它。您必须在调用persist后立即调用flush,如下所示:
$em->persist( $meeting );
$em->flush();
$em->persist( $meetingUser );
$em->flush();
然后它将同时存在。是404错误还是500错误?您查看了日志文件了吗?@el_wichtel这是我在控制台中遇到的错误:加载资源失败:net::ERR_CONNECTION_reset with console您指的是日志文件吗?因此,请发布完整的日志条目并检查数据库连接。通过关系“SocialPro\MeetingBundle\entity\Meeting\meetingUser”找到了一个新实体,该关系未配置为级联实体的持久化操作:SocialPro\MeetingBundle\entity\meetingUser。要解决此问题,请对此未知实体显式调用EntityManager#persist(),或在映射中配置cascade persist此关联,例如@manytone(..,cascade={“persist”})。如果您无法找到导致问题的实体,请执行“SocialPro\MeetingBundle\entity\MeetingUser\#uu toString()”以获取线索。我发现您的代码存在很多问题,很难提出简单的建议。你已经通过考试了吗?如果没有,我建议你先做。从本质上说,查看代码时,您可能需要首先创建一个
MeetingUser
对象并将其持久化,然后创建Meeting
对象并添加MeetingUser
对象并将其持久化。我不知道你是如何创建实体的,所以我不能提出好的建议。
$em->persist( $meeting );
$em->flush();
$em->persist( $meetingUser );
$em->flush();