Cakephp сохранение данных с проверкой isUnique - PullRequest
1 голос
/ 22 ноября 2011

Я пытаюсь сохранить данные с полем, в котором есть правило проверки isUnique, но возникают проблемы при обновлении с помощью метода ниже.

$this->Model->id = 1; 
$this->Model->save($this->data);

Если я это сделаю выше, это приведет к ошибке проверки, говорящей, что мне разрешено иметь только уникальное значение, но я пытаюсь обновить это вместо.

Есть ли способ обойти эту проблему?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Это выглядит нормально для меня; Cake попытается обновить запись с помощью первичного ключа id, если он установлен таким образом вручную.

Выполните поиск в вашей таблице с предположительно «уникальными» данными; и посмотреть, можно ли найти какой-либо другой результат. Возможно, у вас есть дубликаты данных, которые использовались до того, как вы ввели правило проверки isUnique.

Вы делаете это обновление в цикле?

Возможно, вы попытаетесь изменить правило проверки on в вашей модели на create, чтобы оно не запускалось при обновлении; но я не уверен, что это необходимо; Кроме того, вы можете update запись с дублирующейся информацией, победив цель!

var $validate = array(
    'fieldName1' => array(
        'rule' => 'isUnique',
        'required' => true,
        'allowEmpty' => false,
        'on' => 'create', // here
        'last' => false,
        'message' => 'Your Error Message'
    )
);
1 голос
/ 03 мая 2013

Просто передайте идентификатор вместе с массивом.Нравится:

$this->create();
$data['id'] = $id;
$this->save($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...