【问题标题】:How to add a field/parameter on primary key?如何在主键上添加字段/参数?
【发布时间】:2012-12-27 11:47:56
【问题描述】:

我使用 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”

所以我的问题是:我怎样才能将创建日期添加到主键中,或者只是删除在此上有一个主键的事实?

【问题讨论】:

    标签: php sql symfony doctrine-orm


    【解决方案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

    【讨论】:

    • 好吧,只是评论:Doctrine 不知道如何使用日期作为主键。所以我回去删除了所有的“@ORM \Id”并创建了一个正常的索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多