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。

我想在UserEmployee 之间实现独特的一对一关系。

我尝试添加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 映射,因此无法验证其唯一性的主要内容,如果未能解决你的问题,请参考以下文章

FOSUserBundle 并记住我

FOSUserBundle:密码重置后的成功目标

FOSUserBundle表格看起来很奇怪

在 FOSUserBundle 中清除组和角色的使用

FOSUserBundle 组角色设置

FOSUserBundle - 您必须在安全防火墙配置中激活注销