模型,缩写:
function doStuff {
foreach(thing) {
fields = makeFields()
saveStuff(fields)
}
}
function saveStuff (fields = array()) {
if (a record with field data does not yet exist) {
$this->save(fields)
}
上面创建了一条新记录,并且记录了每次foreach
次迭代UPDATES,因为Cake'在内存中加载'新记录,为id
提供$this->save()
不在那里。
解决方案是$this->create()
,但这可以防止创建和修改的字段工作(DB条目归零,发生00:00:00)。有什么建议?我认为在保存之后可能会以另一种方式取消数据,但这会破坏创建/修改的字段吗?
使用CakePHP 2.4.4
答案 0 :(得分:1)
想出来。
$this->create()
加载“空白画布”,因此,根据定义,它会包含记录中可用的所有字段,其默认值。< / p>
在数据库中,我已将created
和modified
字段的默认值设置为0000-00-00 00:00:00
。因此,$this->create()
使用模型数据中的默认值填充这些字段。要使自动填充起作用,它们必须为空。我将两者的默认设置为none,一切都很好。