简短 我的实体有这个:
/**
* @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 ..但是如果我用form编辑它,这就是表单字段:
$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字段设置正确。
我可以硬编码我的解决方案,但我想知道我做错了什么?
在此先感谢,我知道这可能有点难以阅读,抱歉:)