CakePHP: проверка существующих значений полей при сохранении - PullRequest
0 голосов
/ 16 февраля 2012

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

Примеры:

Один: Пользователь без ключа, сохраненного в базе данных:
Модель должна сгенерировать новый ключ и сохранить его для пользователя.

Два: Пользователь с ключом, который уже находится в базе данных:
Модель mustn 'ничего не изменить, кроме того, что было изменено сохранением.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Существует метод beforeSave, который вызывается перед сохранением данных в базе данных.Вы могли бы сделать что-то вроде этого:

public function beforeSave() {
    if (isset($this->data['User']['id'])) {
        $user = $this->find->('first', array(
            'conditions'=>array('User.id'=>$this->data['User']['id'])
        ));
        if (!$user['User']['key']) {
            $this->data['User']['key'] = $this->_generateKey();
        }
    }
    return TRUE;
}

protected function _generateKey() {
    // generate key here
    return $key;
}

Удачи

0 голосов
/ 16 февраля 2012

Предполагая, что ключ и идентификатор либо взаимозаменяемы, либо легко связаны, валидация и магия торта должны покрыть это для вас. Если оцениваемые вами данные могут содержать идентификатор для существующих записей (например, User.id, например), Cake автоматически проверяет данные на наличие идентификатора и генерирует инструкцию INSERT, если в данных нет идентификатора, или ОБНОВЛЕНИЕ заявление, если есть. Затем вы можете использовать проверку в модели, чтобы предотвратить обновление данных с идентификатором.

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