Проблема с обновлением записи в базе данных

#cakephp #cakephp-1.3 #cakephp-model #validation

#cakephp #cakephp-1.3 #cakephp-модель #проверка

Вопрос:

У меня проблема с обновлением пользовательских данных в cakephp.

Когда я отправляю форму, у меня есть эти данные в $ this-> data:

 Array
(
    [User] => Array
        (
            [first_name] => Dusan
            [last_name] => Stojanovic
            [native_language_id] => 25
        )
)
  

но, когда я пытаюсь обновить ее с:

 $this->User->id = $id;
$this->User->save($this->data)
  

модель не сохранена из-за проверки. Они пытаются проверить поля, которых нет в $this-> массиве данных (например, неверный пароль, электронная почта и т.д.). Как я могу это исправить, чтобы я мог обновлять только поля, которые существуют в $ this-> массиве данных?

Ответ №1:

Чтобы правильно сделать это, вы должны установить для on параметра «Правила проверки» значение create only и / или установить require значение false .

Для быстрого исправления укажите $fieldlist поля, которые вы хотите сохранить:

 $this->User->save($this->data, true, array('first_name', 'last_name', 'native_language_id'));
  

Комментарии:

1. Спасибо, это то, что мне нужно. На самом деле, мне нужно удалить required из проверки и установить значение allowEmpty.

Ответ №2:

вы можете сделать это:

 $this->data['User']['id'] = $id
  

из-за [‘id’] cakephp распознает массив как данные, которые обновят набор данных, и не создаст новый набор данных.