0

私は Symfony2.0 と Doctrine を使用しており、次のエンティティを作成しました。

class MetaInformationsQuestionUser
{
  /**
   * @ORM\Id
   * @ORM\ManyToOne(targetEntity="Myproject\Bundle\UserBundle\Entity\User")
   */
  private $user;

  /**
   * @ORM\Id
   * @ORM\ManyToOne(targetEntity="Myproject\Bundle\QuestionsBundle\Entity\MetaInformationsQuestion")
   */
  private $metainformationsquestion;

  /**
   * @var datetime $created
   *
   * @Gedmo\Timestampable(on="create")
   * @ORM\Column(type="datetime")
   */
  private $created;

  /**
   * @var datetime $updated
   *
   * @Gedmo\Timestampable(on="update")
   * @ORM\Column(type="datetime")
   */
  private $updated;

  /**
   * @var array $score
   *
   * @ORM\Column(name="score", type="array", nullable="true")
   */
  private $score;

したがって、このエンティティは、属性との多対多の関係へのリンクです。(この場合、スコアと作成日と更新日)。

私のアイデアは、各ユーザーがプレイしたすべての質問の記録を、獲得したスコアとともに追加することです。

私の問題は、次のエラーが発生することです。

SQLSTATE[23000]: 整合性制約違反: 1062 キー 'PRIMARY' のエントリ '1-3' が重複しています

だから私の質問は次のとおりです。たとえば、作成日を主キーに追加したり、これに主キーを持つという事実を削除したりするにはどうすればよいですか?

4

1 に答える 1

1

はい、分かりました、

追加する必要がありました:

   * @ORM\Id

私の作成したフィールドで:

  /**
   * @var datetime $created
   *
   * @ORM\Id
   * @Gedmo\Timestampable(on="create")
   * @ORM\Column(type="datetime")
   */
  private $created;

欲しかったものを作ってくれました!

ドキュメントは次のとおりです: https://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html#annref-id

于 2012-12-27T12:07:04.680 に答える