Doctrine2 PostPersist:更新相应的实体

时间:2013-03-23 14:13:11

标签: doctrine-orm updating

我有两个实体(注意省略了不相关的方法和属性):

/**
* @Entity
*/
class Manager {

   /**
    * @Column(type="integer")
    */
    private $referencesCount;

    /**
    * @OneToMany(targetEntity="Reference", mappedBy="manager")
    */
    private $references;

    public functions increaseReferenceCount() {
        $this->referencesCount++;
    }

     // other properties and methods
}


/**
* @Entity
* @HasLifecycleCallbacks
*/
class Reference {

    /**
    * @ManyToOne(targetEntity="Manager", inversedBy="references")
    * @JoinColumn(nullable=false)
    */
    private $manager;

    /**
    * @PostPersist
    */
    public function updateManagerReferenceCount() {
        $this->manager->increaseReferenceCount()
    }

     // other properties and methods
}

经理可以有很多参考资料。 One Reference完全属于一个Manager。我的模型应该针对查询进行优化,以避免昂贵的连接(Manager有更多的关联)我添加到Manager模型$ referencesCount属性,你猜对了,它保存了它的引用数。持久保存新引用后,应增加$ referencesCount。但现在却不是。我错过了什么? (我已经厌倦了机智cascade = {“all”}但它对我不起作用)

1 个答案:

答案 0 :(得分:2)

您应该添加Transitive persistence

cascade={"all"}

Reference实体(不仅适用于Manager)。

@PostPersist替换为@PrePersist