另一个未知实体命名空间别名错误(Symfony2,手动创建的实体)

Posted

技术标签:

【中文标题】另一个未知实体命名空间别名错误(Symfony2,手动创建的实体)【英文标题】:Yet another Unknown Entity namespace alias error (Symfony2, manually created entity) 【发布时间】:2016-02-03 07:05:04 【问题描述】:

我有一个[Doctrine\ORM\ORMException] Unknown Entity namespace alias 'src\AppBundle\Entity' 错误信息。

快速搜索让我找到了三个相关的 SO 问题:

here关于 用户创建的捆绑包中的问题,我在这里没有使用。

here 在哪里 错误消息是通过 php 代码获得的,而不是像我目前正在做的那样在命令行中使用教义,并且

there 答案建议做 sudo php app/console cache:clear --env=dev ;我这样做了,然后是sudo chmod a+w app/cache/dev/annotations,但问题仍然存在。

这就是我所做的:

1) 使用php app/console doctrine:database:create成功创建我的数据库

2) 在app/Entity/Product.php 中手动创建一个Product Entity,内容如下(下面的代码是 从 Symfony Book 复制粘贴):

<?php

    namespace AppBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;

    /**
     * @ORM\Entity
     * @ORM\Table(name="product")
     */
    class Product
    
        /**
         * @ORM\Column(type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;

        /**
         * @ORM\Column(type="string", length=100)
         */
        protected $name;

        /**
         * @ORM\Column(type="decimal", scale=2)
         */
        protected $price;

        /**
         * @ORM\Column(type="text")
         */
        protected $description;
    

3) 类型 php app/console doctrine:generate:entities src/AppBundle/Entity:Product - 产生“未知实体命名空间”错误消息。

任何帮助表示赞赏。

【问题讨论】:

php app/console doctrine:generate:entities src/AppBundle/Entity:Product 这是无效的。如果我没记错的话,最后一个参数应该是AppBundle:Product... @JovanPerovic 为什么?我不记得在任何地方都有这样的文档说明 @JovanPerovic 你是对的,如果最后一个参数被替换为AppBundle:Product 它可以工作 Symfony2 应用程序中将使用/将使用两种语法。一个是\My\Company\Namespace\Entity\Product,另一个是MyCompanyNamespace:Product。我相信在代码/配置中的任何位置放置src 都会违反PSR-0Symfony2 很好地看到了所有被认为是捆绑的东西。这就是为什么你必须在你的应用程序中至少有一个 - 所有的东西都是一个捆绑包。 @JovanPerovic 好的。现在你可以把你的cmets放在一个答案中,我会接受,或者我可以删除这个问题,你认为哪个最好 【参考方案1】:

在您的Symfony2 应用程序中将使用/将使用两种语法。

\My\Company\Namespace\Entity\Product MyCompanyNamespace:Product

我认为在您的代码/配置中的任何位置放置src 将违反PSR-0Symfony2 很好地看到了所有东西都被认为是一个捆绑包。这就是为什么你必须在你的应用程序中至少有一个——所有的东西都是一个捆绑包

【讨论】:

以上是关于另一个未知实体命名空间别名错误(Symfony2,手动创建的实体)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用doctrine查询symfony2中实体类中的另一个实体

Symfony2 - 在链配置的命名空间中找不到类“X”

我应该在另一个命名空间中使用实体框架 DBContext 的部分类吗

lupdate错误:使用未知的命名空间/类进行限定

C# 命名空间别名限定符 (::) 与取消引用运算符 (.)

PHP使用命名空间:别名/导入(Aliasing/Importing)