2016-06-07 40 views
1

我是Symfony的初學者,我被要求創建包含一些信息的用戶實體,使用FOSUser 一切順利,直到當我試着做下面一行命令MappingException:無法在'UserBundle Entity User#userRoles'中找到目標實體UserBundle Entity userRoles

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

在這一刻,我有以下錯誤

[學說\ ORM \製圖\ MappingException]
在「UserBundle \ Entity \ User#userRoles」中找不到目標實體UserBundle \ Entity \ 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; 
    } 
} 

這段代碼有什麼問題?謝謝你在前進

回答

2

好像你有一個錯字在註釋中,手風琴與 集的setter/getter方法的簽名targetEntity不是userRoles類,但UserBundle\Entity\Role類的好像。

所以更改定義如下:

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

希望這有助於

+0

謝謝,瞬間解決我的問題! – Jaeger

相關問題