我有这样的东西:
public function postRemove(LifecycleEventArgs $args)
{
$entity = $args->getObject();
$entity->getId();
}
$entity
具有所选表中的每个属性,但id始终为null
我希望它具有我要删除的商品的ID。
答案 0 :(得分:4)
如果您已经删除了该对象,则该对象不再具有ID。
您可能想在preRemove
仍然可用的地方使用id
。
您甚至可以使用preRemove
将ID存储在对象的非映射属性中,然后从postRemove
上的对象中获取该ID。
function preRemove(LifecycleEventArgs $args) {
$object = $args->getObject();
$object->storeId($object->getId());
}
function postRemove(LifecycleEventArgs $args) {
$object = $args->getObject();
$id = $object->getStoredId();
}
答案 1 :(得分:1)
服务在Symfony中是单例的。您可以像使用代理一样使用它们。
在侦听器中创建属性$objectId
。然后按照以下步骤操作:
function preRemove(LifecycleEventArgs $args) {
$object = $args->getEntity();
$this->objectId($object->getId());
}
然后在postRemove中
function postRemove(LifecycleEventArgs $args) {
$id = $this->objectId;
}