DocTine @UniqueEntity与ManyToOne实体的一个字段?

时间:2018-02-05 05:35:10

标签: symfony doctrine-orm

用户表格中提供了 is_deleted 列。
当用户被删除时,记录未被删除只是is_deleted被设置为1 然后我创建具有相同电话号码的新用户。它显示唯一的验证错误。

我想在验证中跳过is_deleted记录。

我的UserProfiles实体

<?php

/**
 * UserProfiles
 *
 * @ORM\Table(name="user_profiles")
 * @ORM\Entity
 */
 class UserProfiles
 {

/**
 * @var string
 *
 * @ORM\Column(name="phone_number", type="string", length=255, nullable=false)
 */
private $phoneNumber;

/**
 * @ORM\OneToOne(targetEntity="ApiBundle\Entity\Users", inversedBy="userProfile")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
 */
private $user;

验证约束yml。

ApiBundle\Entity\UserProfiles:
constraints:
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
        fields: [phoneNumber]
        errorPath: phone_number
        message: "Phone number is already exists."

我想在字段中添加user.is_deleted:[phoneNumber,user.is_deleted]

1 个答案:

答案 0 :(得分:2)

我不确定UniqueEntity约束是否可以解决您的问题,因为is_deleted位于不同的实体上。最有可能的是,您需要使用ExpressionCallback约束,这样您才能实现更复杂的动态验证,并从User实体获取UserProfiles个字段。