Doctrine 2 CRUD生成器和标识符的问题,不称为“id”

时间:2012-07-31 18:08:33

标签: doctrine-orm symfony-2.1

情况如下: 我对Symfony2很陌生并喜欢它,但我对Doctrine的CRUD生成器有问题。我从YAML文件开始生成带有Doctrine的实体,但是无法使用doctrine:generate:crud命令行生成它们的CRUD。

问题: 出于某种原因,我需要设置一个'id'字段和一个getId()方法,但它破坏了我在类图和关系模式上所做的所有工作......

我的问题是: 有没有办法保持我的字段名称不变,让Doctrine仍能生成我的CRUD?

YAML示例:

XXX\XXXBundle\Entity\Utilisateur:
 type: entity
 table: utilisateur
 id:
  pseudo:
   type: string
 fields:
  nom:
   type: string

我坚持这个......我试图改变它:

XXX\XXXBundle\Entity\Utilisateur:
 type: entity
 table: utilisateur
 fields:
  pseudo: # Le pseudo correspond au nom affiché pour identifier un utilisateur.
   type: string
   id: true

但它并没有改变任何我总是这样做的事情:

[RuntimeException]                                                                                      
The CRUD generator expects the entity object has a primary key field named "id" with a getId() method.

如果有人能帮到我,我真的很感激!最糟糕的情况我将不得不修改我的所有实体以添加一个带有自动生成的整数的愚蠢ID字段......

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。

已经有变更请求: https://github.com/sensio/SensioGeneratorBundle/issues/57

在第69-71行的DoctrineCrudGenerator.php中进行了硬编码:

if (!in_array('id', $metadata->identifier)) {
    throw new \RuntimeException('The CRUD generator expects the entity object has a primary key field named "id" with a getId() method.');
}