Cakephp 保存时将Datetime添加到主键
我想做的是使我的主键在保存到数据库中时附加当前的日期时间戳。 例如 主键列的第一个值将包括日期时间24-02-2016 4:35,因此Cakephp 保存时将Datetime添加到主键,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我想做的是使我的主键在保存到数据库中时附加当前的日期时间戳。 例如 主键列的第一个值将包括日期时间24-02-2016 4:35,因此 240220164350 (The last digit is the auto increment value and previous ones is date and time) 然后第二个可能是 240220164361 它也应该是自动递增的 关于如何实现这种功能,有什么想法吗 这是一个愚蠢的想法,因为它可能会导致冲突,同时也会对数据进行非规范化处
240220164350 (The last digit is the auto increment value and previous ones is date and time)
然后第二个可能是
240220164361
它也应该是自动递增的
关于如何实现这种功能,有什么想法吗 这是一个愚蠢的想法,因为它可能会导致冲突,同时也会对数据进行非规范化处理,而且会增加比需要更多的复杂性。我认为完全没有理由做出如此愚蠢的设计决定。只需使用两个字段 但是,如果您喜欢在这里做一些愚蠢的事情,我们就这样做:不要在DB字段上使用autoincrement,编写自定义方法并在
beforeSave()
回调中调用它,该回调会增加记录数并添加时间戳。必须手动设置id,并且仅当实体为新实体时才设置id
您将面临的问题是,当您删除记录时,计数将不正确。如果您有[1,2,3]并删除了2,则下一个id将再次为3。因此,您必须将保存在其他地方的总计数存储起来。你的问题出在哪里、如何以及特别可靠
另一种解决方案是使用两个字段,让DB增加id,并使用SQL的concat()将这两个字段组合成一个新的别名字段。或者去做
或者在创建记录后执行另一个save(),将两个字段的值合并并保存到第三个字段中。这根本不是一个好主意。您应该使用两个字段
id
和time
。
但是,您可以使用PHPtime()
函数返回当前Unix时间戳
更多信息我知道,但我的客户想从我这里得到。。我有个主意。。如果在显示id之前,我将其附加到已创建的字段中,该怎么办?会更容易吗?就像我说的,将它们分开保存,在本例中,在实体上使用虚拟字段,或者在数据库级别使用concat()直接连接它们。请参阅更新的答案。