Model,缩写:
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
迭代都会更新该记录,因为 Cake 会在内存中"加载"新记录,从而为不应该存在的$this->save()
提供id
。
解决方案$this->create()
,但这会阻止创建和修改的字段工作(数据库条目为零,0000-00-00 00:00:00)。有什么建议吗?我想也许在保存后以另一种方式取消设置数据,但这也会破坏创建/修改的字段吗?
使用 CakePHP 2.4.4
通了。
$this->create()
加载一个"空白画布",因此,根据定义,该画布将包括记录中所有可用的字段及其默认值。
在数据库中,我将created
和modified
字段的默认值设置为 0000-00-00 00:00:00
。 因此,$this->create()
使用模型数据中的默认值填充这些字段。要使自动填充正常工作,它们必须为空。我将两者的默认值设置为无,一切都很好。