Łuk*_*ski 5 php unique-constraint symfony sonata-admin
当实体 A 与实体 B 具有 OneToMany 关系时,实体 B 对字段具有唯一约束,例如:
/**
* @ORM\Column(type="string", length=100, nullable=true, unique=true, options={"default":""})
* @Assert\Valid()
* @var string
*/
protected $url = '';
Run Code Online (Sandbox Code Playgroud)
和你的正常情况一样,你会添加到实体类注释中:
@UniqueEntity(fields={"url"}, message="Url can be assigned only to one trigger")
Run Code Online (Sandbox Code Playgroud)
但它在实体A的奏鸣曲管理类中不起作用。为了让它工作,有一个非常好的和简单的方法:
在entityA的管理类中添加:
/**
* @param ErrorElement $errorElement
* @param mixed $object
*/
public function validate(ErrorElement $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();
}
Run Code Online (Sandbox Code Playgroud)
那它!其独特领域的子实体的验证将在管理类中正常工作。
归档时间: |
|
查看次数: |
573 次 |
最近记录: |