CakePHP:在保存时检查现有字段值

时间:2012-02-15 23:24:49

标签: php cakephp callback

如果用户的字段为空,我正在处理需要生成密钥的用户模型。如果用户已在数据库中拥有密钥,则我们不需要生成新密钥。在哪里以及最好的方法是什么?

示例:

一: 没有存储在数据库中的密钥的用户:
模型应该生成一个新密钥并将其保存给用户。

两个 用户已使用数据库中的密钥:
模型不应该改变任何东西,除了保存已经修改的内容。

2 个答案:

答案 0 :(得分:3)

在将数据保存到数据库之前,会调用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;
}
祝你好运

答案 1 :(得分:0)

假设键和id可以互换或容易绑定,验证和Cake魔术应该为您提供。如果您正在评估的数据可能包含现有记录的id(例如User.id),那么Cake会自动检查数据是否存在id,如果数据中没有id,则生成INSERT语句,或者UPDATE语句,如果有。然后,您可以在模型中使用验证来阻止更新具有id的数据。