私はこのコードを持っています
// 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;
それから私はそこにあなたのすべてのアイテムを見ることができます。したがって、すべてのアイテムがメイン オブジェクトにありますが、永続化されていないことを意味します。どうしてか分かりません。
未払いがある場合は、裏側に問題があります。どうすれば関係を逆と逆から所有に変えることができますか