我有了與另一個實體雙向多對一/一對多關係的實體:如何使Doctrine刷新/重新同步雙向實體關聯?
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 manual does suggest,我可以用$shelf->books->add($book)
手動同步的關聯,但由於最初沒有書籍,$shelf->books
是NULL
,我不能調用它的任何方法。
我該如何讓Doctrine重新加載關聯以包含新創建的關聯實體?
(相關:"Doctrine and unrefreshed relationships")