首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“CompanyNameBundle:User”时出错“未知实体命名空间别名”

使用“CompanyNameBundle:User”时出错“未知实体命名空间别名”
EN

Stack Overflow用户
提问于 2016-01-21 07:47:44
回答 1查看 3.9K关注 0票数 1

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

代码语言:javascript
复制
$user = $em->getRepository('CompanyUserBundle:User')
    ->findOneBy([
        'username' => $person->getUsername()
    ]);

我得到了错误Unknown Entity namespace alias 'CompanyUserBundle'.。奇怪的是,如果我将代码更改为:

代码语言:javascript
复制
$user = $em->getRepository('Company\UserBundle\Entity\User')
    ->findOneBy([
        'username' => $person->getUsername()
    ]);

它工作得很完美..。那么,这里怎么了?我在代码周围使用getRepository('Alias:Entity')结构,没有任何其他问题.

我不知道这是否重要,但是User是来自FOSUserBundle BaseUser类的子实体。

编辑

这是我的User类(位于src/Company/UserBundle/Entity):

代码语言:javascript
复制
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的一部分

代码语言:javascript
复制
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在评论中所说,使用

代码语言:javascript
复制
$user = $em->getRepository('UserBundle:User')
    ->findOneBy([
        'username' => $person->getUsername()
    ]);

效果很好..。但我不明白为什么。为什么在这个包中名称空间别名是UserBundle而不是CompanyUserBundle?我知道这一定是个愚蠢的错误,但我看不见.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-25 09:55:02

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

就试着用

代码语言:javascript
复制
$em->getRepository('UserBundle:User')

相反,

代码语言:javascript
复制
$em->getRepository('CompanyUserBundle:User')

在本例中,我认为它的名称空间/ BundleClassName可能只是UserBundle而不是CompanyUserBundle。

谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34918052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档