FOSUserBundle:UniqueEntity 注释抛出:字段“用户”没有被 Doctrine 映射,因此无法验证其唯一性
Posted
技术标签:
【中文标题】FOSUserBundle:UniqueEntity 注释抛出:字段“用户”没有被 Doctrine 映射,因此无法验证其唯一性【英文标题】:FOSUserBundle: UniqueEntity annotation throws: The field "User" is not mapped by Doctrine, so it cannot be validated for uniqueness 【发布时间】:2019-12-31 09:55:41 【问题描述】:我有一个实体Employee
,外键来自User
。
我正在使用 FOSUserBundle。
我想在User
和Employee
之间实现独特的一对一关系。
我尝试添加UniqueEntity
注释,但出现以下错误:
““用户”字段没有被 Doctrine 映射,因此无法验证其唯一性。”
我发现问题在于User
实体使用...
use FOS\UserBundle\Model\User as BaseUser;
...而不是...
use FOS\UserBundle\Entity\User as BaseUser;
但我不知道我必须覆盖什么,因为捆绑中的这个实体不存在..
/**
* Employee
* @ORM\Table(name="employee")
* @ORM\Entity
* @UniqueEntity(
* fields="User",
* errorPath="User",
* message="This account is assigned"
* )
*/
class Employee
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumns(
* @ORM\JoinColumn(name="user_id", referencedColumnName="id",unique=true)
* )
*/
private $myUser;
namespace App\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User extends BaseUser
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
parent::__construct();
// your own logic
function getId()
return $this->id;
function setId($id)
$this->id = $id;
public function getUsername()
return $this->username;
【问题讨论】:
【参考方案1】:您在@UniqueEntity
的@UniqueEntity
定义中引用了Employee
类中的class-name,而不是property-name。。 p>
注解的正确配置应该是fiels="myUser"
,而不是User
。
/**
* @UniqueEntity(
* fields=
* "myUser"
* ,
* errorPath="myUser",
* message="This account is assigned"
* )
*/
class Employee
/**
* [..]
*/
private $myUser;
【讨论】:
以上是关于FOSUserBundle:UniqueEntity 注释抛出:字段“用户”没有被 Doctrine 映射,因此无法验证其唯一性的主要内容,如果未能解决你的问题,请参考以下文章