【问题标题】:Namespace "src\AppBundle\Entity\YesNo" does not contain any mapped entities.命名空间“src\AppBundle\Entity\YesNo”不包含任何映射实体。
【发布时间】:2015-04-20 12:55:56
【问题描述】:

我正在使用 Symfony2,并尝试使用 YML 创建对象。这方面的文档似乎很粗略(与 Symfony 1.x 文档相比)。

我的树结构如下所示:

├── src
│   ├── Acme
│   │   └── DemoBundle
│   ├── AppBundle
│   │   ├── AppBundle.php
│   │   ├── Controller
│   │   ├── Resources
│   │   ├── Tests
│   │   └── Utils

我有一个位于 src/AppBundle/Resources/config/doctrine/reference_entities.yml 的文件,其内容如下:

## YAML Template.
---
# Yes/No
AppBundle\Entity\YesNo:
    type: entity
    table: yesno
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        name:
            type: string
            length: 100
    indexes:
        name_idx:
            columns: name

    uniqueConstraints:
        search_idx:
            columns: [name]

我输入以下控制台命令(根据 Symfony 文档):

php app/console doctrine:generate:entities src/AppBundle/Entity/YesNo

这是控制台的输出:

Generating entities for namespace "src\AppBundle\Entity\YesNo"



  [RuntimeException]                                                            
  Namespace "src\AppBundle\Entity\YesNo" does not contain any mapped entities.  



doctrine:generate:entities [--path="..."] [--no-backup] name

我做错了什么?

【问题讨论】:

    标签: php symfony doctrine-orm


    【解决方案1】:

    我不知道你对 YAML 文件做了什么尝试,但我认为你应该生成一个实体类并实现你所有的 getter 和 setter。

    所以在你的实体文件夹中放置一个名为YesNo 的类:

    <?php
    namespace Test\AppBundle\Entity;
    
    use Doctrine\Common\Collections\ArrayCollection;
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity()
     * @ORM\Table(name="yesno")
     */
    class YesNo {
        .... all your getters / setters
    }
    

    下一个是你应该在Acme 之前定义一个命名空间,你的包直接在你的源文件夹中。您应该创建类似

    的内容

    Company\MyBundle

    http://symfony.com/doc/current/cookbook/bundles/best_practices.html

    以下是一些如何创建实体类的示例。

    http://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class
    ^^^^^
    在这里您可以找到完整的示例和您需要的所有命令。

    【讨论】:

    • 我明白了,看起来如何使用 ORM 在 Symfony2 中发生了很大变化。我上次使用带有 Propel 的 Symfony 1.4.x。我会根据您的建议进行更改,如果有效,我会接受您的回答
    • 其实,我刚刚看了你发的第二个链接。我更喜欢使用 YML,因为我熟悉它,而且我可以轻松创建 FK、索引并确保引用完整性等。
    • 你真的应该先看看 Symfony2 ;) 在你开始之前......在你的 Entity 类中设置实体......请阅读手册......symfony.com/doc/current/book/…
    • 好的。我读了手册。这是一个有效的工作流程:1. 使用 generate-entity 并选择 yml 格式 2. 修改生成的 yml 文件以添加复杂的关系等 3. 使用 generate-entities 更新生成的 php 类?
    猜你喜欢
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多