当entityB上的entityA与OneToMany关系时,entityB对字段具有唯一约束,如:
/**
* @ORM\Column(type="string", length=100, nullable=true, unique=true, options={"default":""})
* @Assert\Valid()
* @var string
*/
protected $url = '';
和你的常规你将添加到实体类注释:
@UniqueEntity(fields={"url"}, message="Url can be assigned only to one trigger")
但它不适用于entityA的奏鸣曲管理类。 为了使它工作,有一个非常好的和简单的方式:
在entityA的admin类中添加:
/**
* @param ErrorElement $errorElement
* @param mixed $object
*/
public function validate(ErrorElement $errorElement, $object)
{
parent::validate($errorElement, $object);
$errorElement
->with('entityB') //field describing connection to entityB in entityA
->addConstraint(
new All(
[
new UniqueEntity(
[
'fields' => 'url',
'message' => 'Url can be assigned only to one trigger',
]
),
]
)
)
->end();
}
那就是它!验证其独特领域的子实体在管理类中可以正常工作。