Php symfony 2无法正确保存到数据库
短 我的实体有:Php symfony 2无法正确保存到数据库,php,symfony,doctrine-orm,save,Php,Symfony,Doctrine Orm,Save,短 我的实体有: /** * @ORM\ManyToOne(targetEntity="Classes", inversedBy="") * @ORM\JoinColumn(name="class_id", referencedColumnName="id") */ protected $class; 我没有反向关系,因为我不需要它。 我试着这样做: $class = $this->getDoctrine()->getRepository('TomasRClassBu
/**
* @ORM\ManyToOne(targetEntity="Classes", inversedBy="")
* @ORM\JoinColumn(name="class_id", referencedColumnName="id")
*/
protected $class;
我没有反向关系,因为我不需要它。
我试着这样做:
$class = $this->getDoctrine()->getRepository('TomasRClassBundle:Classes')->find($_POST['fighter']['class']);
$item = new Fighter();
$item->setName($_POST['fighter']['name']);
$item->setClass($class);
//if i var_dump here $item->getClass(), its there, class where set correctly
$item->setBelongsTo(1);
$em = $this->getDoctrine()->getManager();
$em->persist($item);
$em->flush();
然后在数据库中,在class_id中,我有null。。但是,如果我使用表单编辑它,这是表单字段:
$builder->add('class', 'entity', array('class' => 'TomasRClassBundle:Classes','property' => 'name'));
提交表格后,我会:
$item = $this->getDoctrine()->getRepository('TomasRClassBundle:Fighter')->find($id);
$type = new FighterForm();
$form = $this->createForm($type, $item);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($item);
$em->flush();
//return $this->redirect($this->generateUrl('admin_fighter_list'));
}
现在db中的class_id字段设置正确了
我可以硬编码我的解决方案,但我想知道我做错了什么
提前谢谢,我知道它可能有点难读,对此我很抱歉:)当你保存它时,它会显示任何错误吗?此外,如果你没有inversedBy,你不应该在
@ORM\manyTone(targetEntity=“Classes”,inversedBy=“”)中写它。
不,没有错误,@ORM\manyTone(targetEntity=“Classes”)没有帮助您调试验证吗?也许它永远无法通过验证来持久化新项。您可以在验证的if
子句中转储某个内容,以确保它是否通过验证,以及您定义为type的Fighter
和FighterForm
是什么?