gpt4 book ai didi

doctrine-orm - 使用 Doctrine 2 的 UniqueEntity

转载 作者:行者123 更新时间:2023-12-01 06:12:56 30 4
gpt4 key购买 nike

我正在使用 Zend Framework 2 并创建了一个用户实体。现在我试图使用户名字段唯一。但是出现以下错误。

[Semantical Error] The annotation "@UniqueEntity" in class User\Entity\User was never imported. Did you maybe forget to add a "use" statement for this annotation?

我已添加此代码以进行唯一性检查

@UniqueEntity("email")

我看出来是Symfony中使用的方法。我如何将它用于 Zend Framework 2?

这是我正在使用的实体

<?php

namespace User\Entity;

use Doctrine\ORM\Mapping as ORM,
Zend\Form\Annotation;

/**
* A user entity.
*
* @ORM\Entity
* @ORM\Table(name="users")
* @UniqueEntity("email")

* @property int $id
* @property string $username
* @property string $email
* @property string $password
*
* @Annotation\Name("User")
*/
class User {

/**
* @ORM\Id
* @ORM\Column(type="integer");
* @ORM\GeneratedValue(strategy="AUTO")
*
* @Annotation\Required(false)
*/
protected $id;

/**
* @ORM\Column(type="string")
*
* @Annotation\Attributes({"type":"text"})
* @Annotation\Options({"label":"Username:"})
* @Annotation\Filter({"name":"StringTrim"})
* @Annotation\Filter({"name":"StripTags"})
*/
protected $username;

/**
* @ORM\Column(type="string")
*
* @Annotation\Attributes({"type":"text" })
* @Annotation\Options({"label":"Email:"})
* @Annotation\Filter({"name":"StringTrim"})
* @Annotation\Filter({"name":"StripTags"})
*/
protected $email;

/**
* @ORM\Column(type="string")
*
* @Annotation\Attributes({"type":"text" })
* @Annotation\Options({"label":"Password:"})
* @Annotation\Filter({"name":"StringTrim"})
* @Annotation\Filter({"name":"StripTags"})
*/
protected $password;

public function __get($property) {
return $this->$property;
}

/**
* Magic setter to save protected properties.
*
* @param string $property
* @param mixed $value
*/
public function __set($property, $value) {
$this->$property = $value;
}

public function getArrayCopy() {
return array(
'username' => $this->username,
'email' => $this->email,
'surname' => $this->surname,
'first_name' => $this->first_name,
'company' => $this->company,
'postcode' => $this->postcode,
);
}

public function populate($data) {
$this->username = isset($data['username']) ? $data['username'] : $this->username;
}

public function setDate($property, $value){
$this->$property = new \DateTime($value);
}

}

最佳答案

@UniqueEntity 是 symfony 验证组件的一个特殊扩展(此处写为注解)。您正在寻找的可能是您可以在 DoctrineModule 中找到的验证器:https://github.com/doctrine/DoctrineModule/blob/master/docs/validator.md

支持它,因为注释尚未内置。

关于doctrine-orm - 使用 Doctrine 2 的 UniqueEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14754812/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com