【发布时间】:2012-08-17 08:01:02
【问题描述】:
我有这个代码
// ONE to many Bidir -- inverse side
/**
* @ORM\OneToMany(targetEntity="Item", mappedBy="Room", cascade={"persist"})
**/
protected $items;
另一边
// ONE to many Bidir-- own side
/**
* @ORM\ManyToOne(targetEntity="Room", inversedBy="items")
* @ORM\JoinColumn(name="room_id", referencedColumnName="id")
**/
protected $room;
我的问题是我进入项目页面并选择了 Room ,然后我可以在 Room 页面中看到预先选择的项目
但如果我进入房间页面并尝试多选许多项目,那么这些项目不会被保留
编辑:我已经看到它只发生在 OneToMany 关系中。对于多对多来说,他们工作得很好
EDIT2:
我说的是我有表单和选择框的后端区域,我可以在其中选择多个项目。此表单/CRUD 代码/控制器由学说生成。所以我不需要添加任何额外的功能。无论如何,这是我的控制器代码
$editForm = $this->createForm(new RoomType(), $entity);
$request = $this->getRequest();
$editForm->bindRequest($request);
if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();
当我尝试像这样在控制器中穿行时
foreach($entity->getItems() as $item)
echo $item;
然后我可以在那里看到所有你的项目。所以这意味着所有项目都在主要对象中,但它没有持久化它们。我不知道为什么。
如果有欠款,反面问题。我怎样才能将关系从由于反向和反向转换为拥有
【问题讨论】:
-
不确定你的代码是什么样的,或者你的数据库,一些例子会很有用。
标签: php symfony doctrine-orm