7

我对 Symfony2 比较陌生,到目前为止我很喜欢它——除了这个我一直遇到的问题。

可怕的(对我来说):教义:生成:实体

当我开始我的第一个 Symfony2 项目时,我无法使该命令正常工作,最终只使用了学说:generate:entity,它工作得很好。

但是,这一次我试图为已经有数据库表的系统编写一个应用程序。我按照以下说明进行操作:Symfony2 Docs似乎一切正常,除了像往常一样的原则:generate:entities 位。

我有以下实体文件@My/Bundle/FeedManagerBundle/Entity/Feeds.php

<?php

namespace My\Bundle\FeedManagerBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Feeds
 *
 * @ORM\Table(name="feeds")
 * @ORM\Entity
 */
class Feeds
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="feed_label", type="string", length=100, nullable=false)
     */
    private $feedLabel;

    /**
     * @var integer
     *
     * @ORM\Column(name="advertiser_id", type="integer", nullable=false)
     */
    private $advertiserId;

    /**
     * @var boolean
     *
     * @ORM\Column(name="active", type="boolean", nullable=false)
     */
    private $active;


}

在 My/Bundle/FeedManagerBundle/Resources/config/doctrine/Feeds.orm.yml

Feeds:
    type: entity
    table: feeds
    fields:
    id:
        id: true
        type: integer
        unsigned: false
        nullable: false
        generator:
            strategy: IDENTITY
    feedLabel:
        type: string
        length: 100
        fixed: false
        nullable: false
        column: feed_label
    advertiserId:
        type: integer
        unsigned: false
        nullable: false
        column: advertiser_id
    active:
        type: boolean
        nullable: false
    lifecycleCallbacks: {  }

这是我得到的错误:

$ php app/console doctrine:generate:entities My/Bundle/FeedManagerBundle/Entity/Feeds --path=src
Generating entity "My\Bundle\FeedManagerBundle\Entity\Feeds"



  [Doctrine\Common\Persistence\Mapping\MappingException]                                                                         
  Invalid mapping file 'My.Bundle.FeedManagerBundle.Entity.Feeds.orm.yml' for class 'My\Bundle\FeedManagerBundle\Entity\Feeds'.  



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

我尝试将 yml 文件的名称更改为完整路径。我还尝试将 yml 文件的第一行更改为完整路径,并且我尝试同时做这两件事。似乎没有任何效果,现在我要开始把头发拉出来了。谁能想到这可能不起作用的任何原因?

4

4 回答 4

13

更改Feed.orm.yml为:

My\Bundle\FeedManagerBundle\Entity\Feeds:
   type: entity
   table: feeds
   ...
于 2013-02-27T16:30:01.200 回答
1

我有同样的问题,但问题不存在。

实际上,我想更改实体的名称,即:My\Bundle\FeedManagerBundle\Entity\Aircaft:将是 My\Bundle\FeedManagerBundle\Entity\Aircraft:

(因为桌子是“aircaft”:-S)

但我没有更改文件名。当我将aircaft.orm.yml更改为 airc r aft.orm.yml (带有“r”)时,该命令有效!

于 2013-10-29T12:36:08.893 回答
1

搜索5小时后发现没有答案...

要从 yml 生成实体到 model.php,只需执行此操作。关注下面的粗体文本。命令是:

php app/console doctrine:generate:entities YourAppBundle:ReplaceWithEntityName --path src/

确保你的 model.orm.yml 文件在你的文件夹中

C:\xyz\abc**AppBundle\Resources\config\doctrine** 并且您的 yml 文件在映射代码“ AppBundle\Entity\Book: ”的开头添加了引号中的此引用

于 2017-01-11T11:41:21.077 回答
0

我以不同的方式解决了这个问题。 orm.ymlFeeds 实体的文件正在产生问题,所以我从那时起删除了它,resource -> config -> doctrine然后我运行了 php app/console doctrine:generate:entities YourBundleName

这行得通。

如果您想使用该doctrine:mapping:convert任务将映射信息转换为其他支持的映射格式。用您自己的命名空间替换以下命名空间。它可以 100% 工作。

php app/console doctrine:mapping:convert --namespace="Blogger\BlogBundle\Entity\Blog" yaml src/Blogger/BlogBundle/Resources/config/doctrine
于 2016-10-26T06:18:04.527 回答