我有一個實體需要返回另一個實體的實例 - 存儲的記錄或新的實例(如果沒有存儲的話)。在實體內創建並維持一個新的實體實例
<?php
/**
* @Entity
*/
class User {
/**
* @OneToOne(targetEntity="Basket")
* @JoinColumn(nullable=true)
*/
protected $activeBasket;
public function getActiveBasket() {
if (!isset($this->activeBasket)) {
$this->activeBasket = new Basket($this);
// $em->persist($this->activeBasket);
// $em->flush();
}
return $this->activeBasket;
}
}
我的問題是,我沒有一個EntityManager用於堅持這個新的籃子(顯然不希望在模型中)。我不確定最好的方式來做到這一點。我確實希望能夠致電$user->getActiveBasket()
並檢索一個籃子,無論它是以前創建的還是新的籃子。
感覺這應該是一個常見問題,或者有更好的方法來構造這個(我希望有一種方法可以將EntityRepository或其他東西掛鉤)。我怎樣才能做到這一點?
[cascade persist]怎麼樣(http://docs.doctrine-project.org/zh/2.0.x/reference/working-with-associations.html#transitive-persistence-cascade-operations)?這看起來會解決你的問題。 – Carsten