我有一个字段的实体,不包含在表单中,但是基于其他字段值进行计算,该值与输入一起提供。 目前该值设置在生命周期回调:在刷新实体之前计算唯一别名
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function prePersist() {...}
我想保持这个值在数据库表列的范围唯一的,并且在保存之前修改它,直到它是一个且只有一个。
我试图用
UniqueEntity
,但在实体对象创建的时间字段的值为NULL(未知)。所以在验证之后它会保留在表单提交之后。当实际调用prePersist()
时,该值显示并且未经验证就进入数据库。我可能会尝试获取
EntityRepository
实例,并尝试将检查作为prePersist()
的SQL查询,但它看起来非常难看。我可能会尝试使用一种哈希函数,如md5或sha1,它们主要保证值的唯一性,但哈希函数有冲突,并且我希望保持该值“可读性”。
请向我提出一个“Symfony”风格的解决方案。
我真的不明白你需要什么。你是否想要一个好方法来生成一个自动创建并分配给每个新条目的uniq和可读标识符? – chalasr
“人类可读”是什么意思?你喜欢哪种格式? – Pipe
是的,我需要一种基于用户输入的独特可读标识符生成方式。如果可能的话,它应该更新数据库记录编辑,并且在任何情况下都是唯一的。如果需要,“可读性”意味着易于阅读和记忆(可能部分)。 – anton