есть небольшая, но очень важная разница между вызовами clear()
и create()
внутри цикла:
предположим следующий код:
foreach ($posts as $post) {
$this->Post->create();
$this->Post->id = $post['Post']['id'];
$this->Post->save(['column3' => 'foo', 'column4' => 'bar']);
}
При выполнении create()
: столбец 1, который по умолчанию может иметь логическое значение false, также волшебным образом добавляется в обновляемые поля и может привести к потере данных (подумайте о публикации с column1 = true).
При выполнении clear()
вместо create()
: столбец 1, который не упоминается в инструкции сохранения, вообще не трогается.
Итак, всегда ли безопасно полагаться на clear()
в foreach, где существующие данные частично обновляются?
Вторая часть моего вопроса: ВСЕГДА лучше полагаться на clear()
? (Глядя на код clear()
, вы видите, что это всего лишь удобная оболочка для create(false)
). И единственная разница в create()
и create(false)
это инициализация значений по умолчанию. Я думаю, что значения по умолчанию лучше устанавливать непосредственно на уровне базы данных.
Кстати: я только что предложил небольшое изменение документа. Не стесняйтесь +1 это: