I, когда я сохраняю (обновляю) поле в базе данных MySQL через Model->save()
, если я не указываю значение для поля, для которого установлено значение по умолчанию, тогда оно сбрасывается до значения по умолчанию.
Это происходит, даже если для этого поля уже есть значение.
Например, рассмотрите этот код:
$existing_user = $this->CustomCart->User->field('id',array('User.email'=>$this->data['User']['email']));
if($existing_user)
{
//update information
$this->CustomCart->User->id = $existing_user;
}
$this->CustomCart->User->save($this->data);
В этом коде он проверяет, есть ли уже пользовательсуществует с переданным адресом электронной почты.Если это так, обновите этого пользователя с помощью переданной информации, в противном случае создайте нового пользователя.
Однако в таблице пользователей есть поле с именем role
, значение по умолчанию - customer
Тамдля role
в $this->data
не задано значение, поэтому при создании нового пользователя role
автоматически устанавливается на customer .
Однако при обновлении существующего пользователя, даже если у него есть что-то еще для роли, например " admin ", оно все равно сбрасывает значение на customer .
Я не знаю, почему это так.Другие поля, которые я специально не установил (которые не имеют значения по умолчанию), сохраняют свои значения.Так почему же поля со значениями по умолчанию сбрасываются?