MappingException:The 在 'UserBundle\Entity\User#userRoles' 中找不到目标实体 UserBundle\Entity\userRoles

MappingException:The target-entity UserBundle\Entity\userRoles cannot be found in 'UserBundle\Entity\User#userRoles'

我是 Symfony 的初学者,有人要求我使用 FOSUser 创建一个包含一些信息的用户实体 一切顺利,直到我尝试执行以下行命令

php/bin console doctrine:schema:update --force

此时出现如下错误

[Doctrine\ORM\Mapping\MappingException]
The target-entity UserBundle\Entity\userRoles cannot be found in 'UserBundle\Entity\User#userRoles'.

我尝试更改一些注释,但由于我真的不知道我在做什么,所以这并没有真正起作用

这是实体的片段

<?php
// src/UserBundle/Entity/User.php
namespace UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;

/**
* @ORM\Entity
* @UniqueEntity(fields="email", message="Email already taken")
* @UniqueEntity(fields="username", message="Username already taken")
*/
class User extends BaseUser{

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

//    /**
//    * @ORM\Column(type="string", length=255, unique=true)
//    * @Assert\NotBlank()
//    * @Assert\Email()
//    */
//    protected $email;

    /**
     * @var string
     *
     * @ORM\Column(name="prenom", type="string", length=255)
     */
    private $prenom;

    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=255)
     */
    private $nom;

    /**
     * @var string
     *
     * @ORM\Column(name="pseudo", type="string", length=255)
     */
    private $pseudo;

    /**
     * @var string
     *
     * @ORM\Column(name="telephone", type="string", length=10)
     */
    private $telephone;

//    /**
//    *
//    * @ORM\Column(type="string", length=64)
//    */
//    protected $password;

    /**
     * @ORM\ManyToMany(targetEntity="userRoles", inversedBy="user")
     * @ORM\JoinTable(name="userRoles")
     *
     */
    private $userRoles;





    /**
     * Set prenom
     *
     * @param string $prenom
     *
     * @return User
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;

        return $this;
    }

    /**
     * Get prenom
     *
     * @return string
     */
    public function getPrenom()
    {
        return $this->prenom;
    }

    /**
     * Set nom
     *
     * @param string $nom
     *
     * @return User
     */
    public function setNom($nom)
    {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * Set pseudo
     *
     * @param string $pseudo
     *
     * @return User
     */
    public function setPseudo($pseudo)
    {
        $this->pseudo = $pseudo;

        return $this;
    }

    /**
     * Get pseudo
     *
     * @return string
     */
    public function getPseudo()
    {
        return $this->pseudo;
    }

    /**
     * Set telephone
     *
     * @param string $telephone
     *
     * @return User
     */
    public function setTelephone($telephone)
    {
        $this->telephone = $telephone;

        return $this;
    }

    /**
     * Get telephone
     *
     * @return string
     */
    public function getTelephone()
    {
        return $this->telephone;
    }

    /**
     * Add userRole
     *
     * @param \UserBundle\Entity\Role $userRole
     *
     * @return User
     */
    public function addUserRole(\UserBundle\Entity\Role $userRole)
    {
        $this->userRoles[] = $userRole;

        return $this;
    }

    /**
     * Remove userRole
     *
     * @param \UserBundle\Entity\Role $userRole
     */
    public function removeUserRole(\UserBundle\Entity\Role $userRole)
    {
        $this->userRoles->removeElement($userRole);
    }

    /**
     * Get userRoles
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getUserRoles()
    {
        return $this->userRoles;
    }
}

这段代码有什么问题?提前谢谢你

根据签名,您的注释似乎有错字 设置 setter/getter 方法 targetEntity 不是 userRoles class 但似乎是 UserBundle\Entity\Role class.

所以修改定义如下:

/**
 * @ORM\ManyToMany(targetEntity="UserBundle\Entity\Role", inversedBy="user")
 * @ORM\JoinTable(name="userRoles")
 *
 */
private $userRoles;

希望对您有所帮助