用户表格中提供了 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]
答案 0 :(得分:2)
我不确定UniqueEntity
约束是否可以解决您的问题,因为is_deleted
位于不同的实体上。最有可能的是,您需要使用Expression
或Callback
约束,这样您才能实现更复杂的动态验证,并从User
实体获取UserProfiles
个字段。