Проверка CakePHP для столбцов соединения - PullRequest
0 голосов
/ 13 августа 2011

Теперь у CakePHP есть очень хорошие способы сделать для вас автоматическую проверку.Меня интересует isUnique, но для столбцов соединения.

Скажем, у меня есть два столбца: user1_id, user2_id

Как я могу что-то ввести в модель для этой таблицы, чтобы при проверке валидации, требуется, чтобы пара user1_id / user2_id была уникальной.

IE, вы не можете вставить user1_id = 1, user2_id = 5, если в строке уже есть это.

Спасибо!

1 Ответ

2 голосов
/ 13 августа 2011

Я полагаю, что для этого вы должны использовать собственный метод проверки в вашей модели. Примерно так:

class MyModel extends AppModel {
  var $name = 'MyModel';
  var $validate = array(
    'user1_id' => array(
      'rule' => 'uniqueUserCombination',
      'message' => 'This combination of users is already taken!'
      )
    );

    function uniqueUserCombination($check) {
      $count = $this->find('count', array(
            'conditions' => array(
                'user1_id' => $this->data['MyModel']['user1_id'],
                'user2_id' => $this->data['MyModel']['user2_id'],
            )
        ));
        return $count==0;
    }
}

Вы сказали: «Вы не можете вставить user1_id = 1, user2_id = 5, если в строке это уже есть». Приведенный выше код работает для вашего примера, но позволит user1_id = 5, user2_id = 1. Если вам нужно это тоже запретить, добавьте больше условий к find выше. Также рекомендуется создать индекс UNIQUE для обоих столбцов в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...