我在用户和内容之间定义了ManyToMany关系,如下所示:
/**
* @ORM\ManyToMany(targetEntity="Acme\UserBundle\Entity\User")
* @ORM\JoinTable(name="acme_content_likes")
*/
private $user_likes;
如果用户喜欢将关系写入表格的内容,那么一切都很有效。但是,连接表只有两列, user_id和content_id 。我真的需要关注内容的日期和时间(出于统计原因)。
此处也没问题,我在表上的UPDATE列上创建了TIMESTAMPABLE(通过phpMyAdmin),因此每次添加new时都会插入日期。
问题是当我尝试在控制台中运行SCHEMA更新时:
php app/console doctrine:schema:update --force
然后,操作将删除数据库中新创建的TIMESTAMPABLE列:
ALTER TABLE acme_content_likes DROP date;
有没有办法可以配置我的实体,所以即使在SCHEMA更新中我也可以将Date保留在Join表中?
感谢您的帮助!
答案 0 :(得分:2)
我不认为简单的连接表是您的解决方案,即使您确实想要记录表连接的日期。
可能的解决方案可能是:
many to one
关系的联接表。我会选择第二个。 (我实际上已经这样做了)
原则是正确的,不要让你弄乱连接表。
编辑以使其更有用。
我过去曾使用过一个symfony包来记录所有的学说行为,它是loggable extension