【问题标题】:Symfony2 Error Using doctrine:generate:entities to Create Getters and SettersSymfony2 错误使用教义:生成:实体创建获取器和设置器
【发布时间】:2014-04-22 23:12:04
【问题描述】:

我在第一个包中创建了几个实体,没有任何问题。但是当我创建一个新包时,使用普通命令:

php app/console generate:bundle

这会创建一个包含模板文件的包结构,并将包注册到 app/config/AppKernel.php 中

然后我在新的捆绑文件夹中创建了实体:/Acme/Bundle/Entity/

但是当我用命令生成getter和setter时:

php app/console doctrine:generate:entities AcmeBundle

它给出了一个错误:

[RuntimeException]                                                     
Bundle "AcmeBundle" does not contain any mapped entities. 

为什么找不到这些实体?

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案1】:

    这是因为新包没有自动注册到 /app/config/config.yml 文件中。所以教义显然不知道去哪里寻找实体。

    如果您只有一个 ORM 数据库连接,也许这不是问题。但是如果你已经使用特殊的 ORM 映射定义了多个连接,你需要记住使用正确的实体管理器连接注册每个单个 Bundle:

    doctrine:
        orm:
            default_entity_manager: cms
            entity_managers:
                cms:
                    connection: cms
                    mappings:
                        GutensiteCmsBundle: ~
                        GutensiteArticleBundle: ~
                billing:
                    connection: billing
                    mappings:
                        GutensiteBillingBundle: ~
    

    似乎应该有一种更好的方法让所有实体都使用默认的...“默认”,因此您不必每次都这样做。有人知道吗?

    【讨论】:

    • 这让我最近又来了一次。我很高兴我自己回答了这个问题:D,但我很想知道其他人是否有更好的自动化解决方案。
    【解决方案2】:

    我认为您错过了捆绑包名称。您应该像 AcmeHelloBundle 而不是 AcmeBundle 那样创建包,其中 Hello 是您的包的名称。像这样:

    php app/console generate:bundle --namespace=Acme/HelloBundle
    

    然后运行

    php app/console doctrine:generate:entities Acme
    

    【讨论】:

    • 感谢您的想法。我的示例只是使用通用名称,其中“Bundle”代表包的名称,例如/Acme/Bundle 与 Acme/HelloBundle 相同。对困惑感到抱歉。我在下面发布的答案原来是解决方案,即您显然必须使用 ORM 注册每个捆绑包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多