我有一个实体需要返回另一个实体的实例 - 存储的记录或新的实例(如果没有存储的话)。在实体内创建并维持一个新的实体实例
<?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