Symfony2 Doctrine doctrine:generate:实体永远不会起作用

时间:2013-02-27 16:26:35

标签: symfony doctrine-orm doctrine entities

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

可怕的(对我来说):doctrine:generate:entities

当我开始我的第一个Symfony2项目时,我无法使该命令工作,最终只使用了doctrine:generate:entity而不是工作正常。

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

我有以下实体文件@ 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文件的第一行更改为完整路径,我尝试同时执行这两项操作。似乎没有什么工作&amp;现在我要把头发拉出舞台了。任何人都可以想到为什么这可能不起作用?

4 个答案:

答案 0 :(得分:13)

Feed.orm.yml更改为:

My\Bundle\FeedManagerBundle\Entity\Feeds:
   type: entity
   table: feeds
   ...

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分: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:的开头添加了引号“

答案 3 :(得分:0)

我以不同的方式解决了这个问题。 Feeds实体的orm.yml文件正在创建问题,因此我从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