错误'未知实体名称空间别名'使用' CompanyNameBundle时:用户'

时间:2016-01-21 07:47:44

标签: symfony fosuserbundle

我对Symfony2有一个奇怪的问题。我正在开发一个包含40-50个实体的项目,其中一个实体的代码不起作用:

$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),
        );
    }
}

更多信息:正如@herr在评论中所说,使用

$user = $em->getRepository('UserBundle:User')
    ->findOneBy([
        'username' => $person->getUsername()
    ]);

工作正常......但我不明白为什么。为什么在此捆绑包中,命名空间别名为UserBundle而不是CompanyUserBundle?我知道这肯定是一个非常愚蠢的错误,但我无法看到它......

1 个答案:

答案 0 :(得分:2)

您可以使用UserBundle.php而非CompanyUserBundle.php签入您的UserBundle的Bundle类文件。

尝试使用

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

而不是

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

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

感谢。