2016-01-21 53 views
1

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?我知道这肯定是一个非常愚蠢的错误,但我看不到它...

+0

所有其他实体与'User'实体在同一个命名空间中吗? – xabbuh

+0

@xabbuh:不,用户实体是'UserBundle'命名空间中唯一的实体。 – mHouses

+0

只需尝试使用$ em-> getRepository('UserBundle:User'),我认为它的名称空间/ BundleClassName可能只有UserBundle而不是CompanyUserBundle。 – herr

回答

2

您可以检查UserBundle的Bundle类文件,它将与UserBundle.php代替CompanyUserBundle.php。

刚刚尝试使用

$em->getRepository('UserBundle:User') 

代替

$em->getRepository('CompanyUserBundle:User') 

我认为它的命名空间/ BundleClassName可能只有UserBundle不是在这种情况下CompanyUserBundle。

谢谢。