我有这个代码
// 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 页面并尝试多选许多项目,那么这些项目不会被保留
编辑:我已经看到它只发生在 OneToMany 关系中。对于多对多,他们工作正常
编辑2:
我说的是我有表单和选择框的后端区域,我可以在其中选择多个项目。此表单/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;
然后我可以在那里看到所有你的项目。所以这意味着所有项目都在主要对象中,但它没有持久化它们。我不知道为什么。
如果有欠款,反面问题。我怎样才能将关系从由于反向和反向转换为拥有