Symfony 保存前根据实体id更新字段
我在实体中有应使用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 { ... /**
/**
* 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。