猿问

如何在 postRemove 事件期间获取实体的对象 ID?

我有这样的事情:


public function postRemove(LifecycleEventArgs $args)

{

    $entity = $args->getObject();

    $entity->getId();

}

$entity 具有所选表中的所有属性,但 id 始终为 null


我希望它具有我要删除的项目的 ID。


慕尼黑5688855
浏览 114回答 2
2回答

郎朗坤

如果您已经删除了该对象,则它不再具有 id。您可能想在仍然可用preRemove的地方使用。id您甚至可以使用preRemove将 id 存储在对象的非映射属性中,然后从对象中获取该 id postRemove。function preRemove(LifecycleEventArgs $args) {   $object = $args->getObject();   $object->storeId($object->getId());}function postRemove(LifecycleEventArgs $args) {   $object = $args->getObject();   $id     = $object->getStoredId();}

蛊毒传说

Symfony 中的服务是单例的。您可以像使用代理一样使用它们。$objectId在侦听器中创建一个属性。然后按照这个:function preRemove(LifecycleEventArgs $args) {   $object = $args->getEntity();   $this->objectId($object->getId());}然后在 postRemove 中:function postRemove(LifecycleEventArgs $args) {   $id     = $this->objectId;}
随时随地看视频慕课网APP
我要回答