我使用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”
所以我的问题是:如何将主要密钥的创建日期添加到主键中,或者只是删除事实以获得主键?
答案 0 :(得分: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