Symfony 保存前根据实体id更新字段

Symfony 保存前根据实体id更新字段,symfony,doctrine-orm,Symfony,Doctrine Orm,我在实体中有应使用id计算的字段。我尝试通过以下方式解决此问题: /** * Resources * * @ORM\Table(name="resources") * @ORM\Entity(repositoryClass="MyTask\Core\Repository\ResourcesRepository") * @ORM\HasLifecycleCallbacks() */ class Resources extends BaseEntity { ... /**

我在实体中有应使用id计算的字段。我尝试通过以下方式解决此问题:

/**
 * Resources
 *
 * @ORM\Table(name="resources")
 * @ORM\Entity(repositoryClass="MyTask\Core\Repository\ResourcesRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class Resources extends BaseEntity
{
...


    /**
     * @return $this
     * @ORM\PostPersist()
     */
    public function generateHash()
    {
        $this->setHash(substr(md5($this->getId() . $this->getName()), 0, 8));
        return $this;
    }

但哈希字段不会被计算,并保持为空。您能告诉我如何解决这个问题吗?

我只是使用php uniqid而不是使用实体id,因为我无法使用事件来解决它。

您是否为类包含了@HasLifecycleCallbacks注释?我添加了HasLifecycleCallbacks,并使用断点检查了此方法的执行情况。之前使用了PrePersist,但id为在这种情况下为null,哈希不是唯一的,但在PrePersist id中是可访问的。请尝试将以下参数“LifecycleEventArgs$a”添加到generateHash。然后调用$a->getEntity()->getId()并使用该id创建哈希。据我判断,在PrePersist中可以访问该id。