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;
希望对您有所帮助
我是 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;
希望对您有所帮助