clear()
调用和create()
循环之间有一个很小但非常重要的区别:
让我们假设以下代码:
foreach ($posts as $post) {
$this->Post->create();
$this->Post->id = $post['Post']['id'];
$this->Post->save(['column3' => 'foo', 'column4' => 'bar']);
}
执行create()
: column 1 时,可能默认为 boolean false,它也神奇地添加到更新字段中,并可能导致数据丢失(想想 column1 = true 的帖子)。
当做一个clear()
而不是create()
:第1列时,保存语句中没有提到它根本没有被触及。
clear()
那么,在现有数据部分更新的 foreach 中依赖它总是安全的吗?
我的问题的第二方:依赖总是clear()
更好吗?(当查看 的代码时clear()
,您会发现它只是 的便捷包装器create(false)
)。create()
和的唯一区别create(false)
是默认值的初始化。我认为,最好直接在数据库级别设置默认值。
顺便说一句:我刚刚提出了一个小的文档更改。随意+1这个: