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

How do I get the object id of an entity during the postRemove event?

我有这样的东西:

public function postRemove(LifecycleEventArgs $args)
{
    $entity = $args->getObject();
    $entity->getId();
}

$entity 具有所选 table 中的每个 属性,除了 id,它始终是 null

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

如果您已经删除了对象,它就不再有 ID。

您可能想在 id 仍然可用的地方使用 preRemove

您甚至可以使用 preRemove 将 id 存储在对象的非映射 属性 中,然后从 postRemove.[=16 上的对象获取该 id =]

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;
}