Будет ли метод сохранения в классе модели Cakephp выбирать между созданием и обновлением записи?

По сути, я хочу добиться того же, что и ON DUPLICATE КЛЮЧ в MySQL.

Вот надуманный пример:

$rec = array('Foo' => array(
  'id' => 999,  // Assume there isn't already a record with this id
  'website' => 'google'
));
$this->Foo->save($rec);

// save with different 'website' value
$rec['Foo']['website'] = 'stackoverflow';
$this->Foo->save($rec);

Обновляет ли последняя строка запись, которая была создана всего на несколько строк выше?


person allyourcode    schedule 10.07.2009    source источник


Ответы (1)


Если вы вызовете save(), предоставив запись с существующим id (или любым другим первичным ключом), она будет обновлена, в противном случае будет создана новая запись.

Так что в вашем случае да, это обновит запись, которая была впервые создана вверху.

Обновить

Вот дополнительная документация:

Создание или обновление управляется полем идентификатора модели. Если установлен $Model->id, запись с этим первичным ключом обновляется. В противном случае создается новая запись.

По документации для Model::save().

person Peter    schedule 10.07.2009