CakePHP:总是使用clear()而不是create()?

Joh*_* N. 3 php cakephp cakephp-2.5

在调用clear()create()循环内部之间存在一个小但非常重要的区别:

我们假设以下代码:

foreach ($posts as $post) {
  $this->Post->create();
  $this->Post->id = $post['Post']['id'];
  $this->Post->save(['column3' => 'foo', 'column4' => 'bar']);
}
Run Code Online (Sandbox Code Playgroud)

当执行create():第1列(可能默认为布尔值false)时,会神奇地添加到更新的字段中,并且可能导致数据丢失(想到post1 with column1 = true).

当执行a clear()而不是create():第1列时,保存语句中未提及的内容根本没有被触及.

那么,clear()在现有数据部分更新的情况下依赖它是否总是安全的?

我的问题的第二方:依靠它总是更好clear()吗?(当看到代码时clear(),你会发现,它只是一个方便的包装器create(false)).而在唯一的区别create(),并create(false)为缺省值的初始化.我认为,默认值最好直接在数据库级别设置.

顺便说一下:我刚刚提出了一个小的文档变更.随意为此+1:

ADm*_*mad 6

那么,在foreach中依赖clear()总是安全的,现有数据是部分更新的吗?

是.

依赖clear()总是更好吗?

添加记录create()时使用的唯一好处是,您的表单将预先填充默认值以显示给用户.因此,如果您不关心这一点,您可以随时使用.clear()