Я предлагаю вам использовать preUpdate
событие из Обратные вызовы жизненного цикла доктрины .В случае обновления сообщения вы указываете доктрине проверить, есть ли изменение тега (в данном случае это значение равно NULL), если да, то запросите проверку тега, если какие-либо сообщения все еще используют его.
Короче говоря,вам нужно:
Добавить @ORM \ HasLifecycleCallbacks перед вашим классом, чтобы включить жизненные циклы.
Добавить функцию preUpdate в класс Post:
/**
* @ORM\PreUpdate
* @param PreUpdateEventArgs $event
*/
public function clearChangeSet(PreUpdateEventArgs $event)
{
if ($event->hasChangedField('field_you_want_to_check')
) {
$em = $event->getEntityManager();
// Now use the entityManager to query the tag and check.
}
}
При выполнении этой доктринысделайте проверку за вас, в логическом коде, который вам просто необходим для отсоединения, нет необходимости заботиться об удалении тегов там.
Обновление: как указано, для ассоциаций в сущности вы не можете получить изменения с помощью $event->hasChangedField
, используйте метод в Symfony 3 / Doctrine - Получить изменения ассоциаций в наборе изменений сущностей