我有兩個實體(注意,不相關的方法和屬性被省略):Doctrine2 PostPersist:更新相應的實體
/**
* @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
}
經理可以有很多參考。一份參考文獻完全屬於一名經理。我的模型應該針對查詢進行優化,所以爲了避免昂貴的連接(管理員有更多的關聯),我添加到Manager模型$ referencesCount屬性中,您猜對了它,它保存了引用的數量。在新引用持久之後,應該增加$ referencesCount。但現在不是。我錯過了什麼? (我已經厭倦了機智級聯= { 「所有」},但它不爲我工作)
也許你忘了在更改屬性後忘記堅持經理實體,是嗎? – lazyhammer 2013-03-23 14:24:45
錯別字? '@ HasLifecycleCallbacs' vs'@ HasLifecycleCallbacks' – Crisp 2013-03-23 15:18:28
@Crisp - 不,這不是一個錯字:) – biera 2013-03-23 17:14:11