我的目标是在字段上验证具有uniqueEntity约束的实体。此字段由使用生命周期回调PrePersist连接的2个未映射字段组成。问题是验证没有发生,系统允许我将数据插入数据库时不应该。
/**
* Recipe
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\RecipeRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(
* ignoreNull = false,
* fields={"amount"},
* message="Not valid"
* )
*/
class Recipe
{...}
...
/**
* @ORM\PrePersist()
*/
public function preSave()
{
$this->amount = $this->getAmountInteger() . '.' . $this->getAmountDecimal();
}
答案 0 :(得分:0)
我有一个具有此定义的实体并且运行正常,但您的情况有所不同,因为您在preSave中设置'amount'...
* @UniqueEntity(fields={"amount"}, message="Not valid")
* @ORM\Table(uniqueConstraints={@ORM\UniqueConstraint(name="unique_amount", columns={"amount"})})
在我使用的另一个实体中
@ORM\Column(type="string", length=127, nullable=false, unique=TRUE)
不同的是在第一种情况下我使用compuest键并在fields = {field1,field2}中定义键..在第二个例子中我使用简单的唯一键。