2

別のエンティティとの双方向の ManyToOne/OneToMany 関係を持つエンティティがあります。

class BookShelf {
  /** 
  * @OneToMany(targetEntity="Book", mappedBy="shelf", cascade={"persist"})
  */
 public $books;
}
class Book {
  /** 
  * @ManyToOne(targetEntity="BookShelf", inversedBy="books", cascade={"persist"})
  */
 public $shelf;
}

新しい本を作成しようとしていて、そのオブジェクトを本棚にリストします。

$book = new Book();
$book->shelf = $shelf;
$em->persist($book); $em->flush();
$shelf->showBooks();

その後、 に$shelf->booksはブックが含まれていませんが、代わりに が含まれていますNULL。ただし、本はデータベースに正しく挿入されており、$shelf->showBooks()別のページロードで実行すると、本は適切にリストされます。

追加しよう$em->refresh($book)とし$em->refresh($shelf)ましたが、役に立ちません。関連付けはまだ更新されていません。

Doctrine のマニュアル$shelf->books->add($book)では、関連付けを手動で同期するために使用できることが示唆されていますが、最初は本がないため、メソッドを呼び出すことはできません$shelf->booksNULL

新しく作成された関連付けられたエンティティを含めるために、Doctrine に関連付けをリロードさせるにはどうすればよいですか?

(関連: 「ドクトリンとリフレッシュされていない関係」 )

4

1 に答える 1