小编Łuk*_*ski的帖子

Symfony Sonata Admin sonata_type_collection 与实体 UniqueEntity 验证

当实体 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', …
Run Code Online (Sandbox Code Playgroud)

php unique-constraint symfony sonata-admin

5
推荐指数
0
解决办法
573
查看次数

标签 统计

php ×1

sonata-admin ×1

symfony ×1

unique-constraint ×1