У меня есть небольшая проблема с PreUpdate LifecycleCallbacks в Symfony.PreUpdate entity symfony LifecycleCallbacks
У меня есть объект Пользователь с отношением OneToMany с продуктом сущности.
class User{
/**
* @ORM\OneToMany(targetEntity="Product", mappedBy="formulario", cascade={"persist", "remove"})
*/
private $products;
}
class Product{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="products")
* @ORM\JoinColumn(name="user", referencedColumnName="id")
*/
private $user;
}
Проблема возникает, когда я добавляю или удаляю продукт у Пользователя. Когда это происходит, я хочу запустить функцию PreUpdate, чтобы внести некоторые изменения в User Entity. Но PreUpdate не является огнем при изменении объекта Product от пользователя.
Большое спасибо !!!
$ Produt на объект пользователя является обратная сторона ассоциации, я не уверен, любой обратный вызов жизненного цикла будет вызван для пользователя, когда Продукт (сторона владельца) будет изменен. Вы можете попробовать поставить обратный вызов на объект продукта – Florent
Хорошо! Это работает! Благодаря! Но есть ли способ поставить PreUpdate в User Entity? В некотором роде Пользователь меняет добавление продукта ... Для меня это намного проще и организован, чтобы увидеть функцию в объекте User. По-вашему, мне нужно вызвать функцию пользователя из объекта продукта PreUpdate {$ this-> getUser() -> PreUpdateUser()}. Поэтому у меня должно быть две функции: PreUpdate для пользователя и PreUpdate для продукта (который вызывает пользователя PreUpdate) В любом случае, большое спасибо! – Angel
Кроме того, также запускается событие PreRemove, но оно не вносит изменений. Итак, если я удаляю продукт, функция PreRemove запускается, но код $ this-> getUser() -> setSomeField() не действует, поэтому Продукт удаляется из БД, но Пользователь не меняет :(Это потому, что я удаляю объект Product, так что изменения в FK пользователя теряются? – Angel