我对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;现在我要把头发拉出舞台了。任何人都可以想到为什么这可能不起作用?
答案 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