Symfony2中存在一个奇怪的问题。我工作的一个项目,以40-50实体,并与其中的一个验证码不起作用:错误'Unknown Entity namespace alias'when using'CompanyNameBundle:User'
$user = $em->getRepository('CompanyUserBundle:User')
->findOneBy([
'username' => $person->getUsername()
]);
我得到的错误Unknown Entity namespace alias 'CompanyUserBundle'.
。奇怪的是,如果我改变我的代码:
$user = $em->getRepository('Company\UserBundle\Entity\User')
->findOneBy([
'username' => $person->getUsername()
]);
它的工作完美...所以,这里有什么问题?我使用的是getRepository('Alias:Entity')
建筑周围所有的代码,并没有任何其他问题...
我不知道这是否是重要的,但User
是FOSUserBundle BaseUser
类子实体。
编辑
这里是我的User
类(它位于src/Company/UserBundle/Entity
):
namespace Company\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="fos_user")
* @ORM\Entity
*/
class User extends BaseUser
{
/**
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
在这里,我AppKernel.php
的一部分:
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
/* ... other, non interesting, bundles... */
new Company\UserBundle\UserBundle(),
new FOS\UserBundle\FOSUserBundle(),
new FR3D\LdapBundle\FR3DLdapBundle(),
new JMS\AopBundle\JMSAopBundle(),
new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),
);
}
}
更多的Infor mation:正如@herr在评论中所说,使用
$user = $em->getRepository('UserBundle:User')
->findOneBy([
'username' => $person->getUsername()
]);
工作正常......但我不明白为什么。为什么在这个包中名称空间别名是UserBundle
而不是CompanyUserBundle
?我知道这肯定是一个非常愚蠢的错误,但我看不到它...
所有其他实体与'User'实体在同一个命名空间中吗? – xabbuh
@xabbuh:不,用户实体是'UserBundle'命名空间中唯一的实体。 – mHouses
只需尝试使用$ em-> getRepository('UserBundle:User'),我认为它的名称空间/ BundleClassName可能只有UserBundle而不是CompanyUserBundle。 – herr