0

私は2つのエンティティ(ユーザーと学生)をマージして単一のフォームを作成しようとしていました。以下は私のorファイルです

Ens\JobeetBundle\Entity\User:
  type: entity
  table: abc_user
  id:
    user_id:       { type: integer, generator: { strategy: AUTO } }
  fields:

    username: { type: string, length: 255, notnull: true, unique: true }
    email:    { type: string, length: 255, notnull: true, unique: true }
    password: { type: string, length: 255, notnull: true }
    enabled:  { type: boolean }
  oneToOne:
    student:
      targetEntity: Ens\JobeetBundle\Entity\Student
      mappedBy: user

Ens\JobeetBundle\Entity\Student:
  type: entity
  table: abc_student
  id:
    student_id: { type: integer, generator: { strategy: AUTO } }        
  fields:
    first_name: { type: string, length: 255, notnull: true }
    middle_name: { type: string, length: 255 }
    last_name: { type: string, length: 255, notnull: true }
  oneToOne:
    user:
      targetEntity: Ens\JobeetBundle\Entity\User
      joinColumn:
        name: user_id
        referencedColumnName: user_id

エンティティの作成とスキームの更新は正常に機能しています。

php app/console doctrine:generate:entities EnsJobeetBundle

php app/console doctrine:database:update --force

しかし、クラッドを生成しようとすると

php app/console generate:doctrine:crud --entity=EnsJobeetBundle:Student

私は次のエラーで終わっています、

[RuntimeException]

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

これを取り除く方法を知っている人はいますか?Symfony 2 で 2 つのフォームをマージするには?

どんな助けでも大歓迎です...

4

1 に答える 1

0

これは、CRUDジェネレーターがstudent_idなどのカスタマイズされたIDをサポートしていないためです...コードを参照してください。以下に示すように、idがエンティティにない場合、ランタイム例外が発生します。

//....
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.');
}
//....

モデルのカスタムIDの名前を変更する必要があります。

ユーザー:

protected $id;

public function getId()
{
    return $this->id;
}

学生:

protected $id;

public function getId()
{
    return $this->id;
}
于 2012-08-09T02:39:33.753 に答える