symfony - 未映射字段的唯一实体约束

时间:2016-10-20 09:46:30

标签: validation symfony constraints lifecycle unique-constraint

我的目标是在字段上验证具有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();
}

1 个答案:

答案 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}中定义键..在第二个例子中我使用简单的唯一键。