CakePHP在模型中调用$ this-> create()会打破$ this-> save()的'created'和'modified'自动字段

时间:2014-02-25 18:44:34

标签: cakephp save record

模型,缩写:

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

1 个答案:

答案 0 :(得分:1)

想出来。

$this->create()加载“空白画布”,因此,根据定义,它会包含记录中可用的所有字段,其默认值。< / p>

在数据库中,我已将createdmodified字段的默认值设置为0000-00-00 00:00:00。因此,$this->create()使用模型数据中的默认值填充这些字段。要使自动填充起作用,它们必须为空。我将两者的默认设置为none,一切都很好。