命名空间“src \ AppBundle \ Entity \ YesNo”不包含任何映射实体。

时间:2015-04-20 12:55:56

标签: php symfony doctrine-orm

我正在使用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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不知道您尝试使用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
^^^^^
在这里,您可以找到所需的完整示例和所有命令。