У меня есть два объекта (заметим, что несоответствующие методы и свойства опущены):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
}
менеджер может иметь много ссылок. Одна ссылка относится именно к одному менеджеру. Моя модель должна быть оптимизирована для запросов, поэтому, чтобы избежать дорогостоящих объединений (у менеджера есть гораздо больше ассоциаций), я добавляю к свойству Model Model $ referenceCount, которое, как вы догадались, содержит числа его ссылок. После сохранения новой ссылки необходимо увеличить значение $ referenceCount. Но сейчас это не так. Что мне не хватает? (Я уже устал остроумие каскад = { "все"}, но это не работает для меня)
Возможно, вы забыли сохранить сущность менеджера после изменения его собственности, не так ли? – lazyhammer
Возможно, типо? '@ HasLifecycleCallbacs' vs' @ HasLifecycleCallbacks' – Crisp
@Crisp - нет, это не опечатка :) – biera