【发布时间】:2014-02-25 18:44:33
【问题描述】:
型号,缩写:
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->id = null。如果存在id,Cake 将更新该行。否则,它将创建它。 -
@Eagle - 这不起作用 - 重载某些东西或其他东西'没有效果'。但是,它确实让我想到了空白字段,因此得到了答案。