问题
我正在使用带有 AJAX 的 Symfony2 在我的“位置”表中插入一条新记录。我可以轻松地将我想要的数据从表单传递到处理该 AJAX 请求的控制器。我检查了 Firebug,所有 GET 值都符合我的要求。只是要清楚控制器不在位置控制器中,而是在调试控制器中,不知道这是否重要。(仅用于沙盒测试 atm)。
由于数据库中的关系,位置实体有一个地区列,需要一个地区实体对象。
现在的问题是,如果我省略了 $em->flush(),这段代码将返回成功响应。如果我添加 $em->flush() 来执行插入,我会在浏览器的控制台中收到 500 内部错误。
这是我的控制器的代码:
$request = $this->container->get('request');
if($request->isXmlHttpRequest()){
$street = $request->query->get('street');
$zip = $request->query->get('zip');
$lat = $request->query->get('lat');
$name = $request->query->get('name');
$number = $request->query->get('number');
// insert into object
$entity = new Location();
$entity->setStreet($street);
$entity->setZip($zip);
$entity->setLat($lat);
$entity->setName($name);
$entity->setNumber($number);
$em = $this->getDoctrine()->getManager();
$district = new District();
// get the district hard coded for testing
$district = $em->getRepository("SnowFrontBundle:District")->find(7);
$entity->setDistrict($district);
//$entity->setDistrict(null);
$em->persist($entity);
$em->flush();
//prepare the response, e.g.
$response = array("code" => 100, "success" => true);
return new Response(json_encode($response));
}
问题
$em->flush() 部分可能有什么问题?我怎样才能看到真正的错误是什么?(而不是 500 内部错误)。我也应该使用 createFormBuilder 吗?