我一直在努力解决这个问题一段时间,并且无法找出这种行为的合理解释......
我在MySQL中有一个名为“notifications”的表和列“package_id”,“mail_sent_at”和“sms_sent_at”,以及适当的Propel模型。 我用当前时间设置“sms_sent_at”列并保存它。完美的工作。
$not = new Notification();
$not->setPackageId($package_id);
$not->setSmsSendedAt(time())->save();
现在我想再添加一件东西 - 设置mail_sent_at列。所以我做了什么:
$not = new Notification();
$not->setPackageId($package_id1);
$not->setMailSendedAt(time())->save();
$not->setSmsSendedAt(time())->save();
附加说明:
为什么会发生这种情况,我该如何解决?
聚苯乙烯。是的,我知道它是“发送”,而不是“发送”
修改
最后我找到了解决方案。如果有人遇到类似的问题: 检查推进模式中的主键是否具有autoIncrement =“true”。如果没有 - 加上它! 发生的事情是:我创建了一个id = null的新对象,使用隐式SQL INSERT将其保存到DB(因为它是新记录),并且在处理同一个对象时修改它并再次将其保存到DB,但是这个SQL UPDATE无法实现的时间(Propel指出我插入了这个对象一次)。问题是,在第一次保存后我没有得到我的对象集的id(即使在DB中设置了ID)。所以第二个SQL包含“UPDATE ... WHERE id = NULL”。