如果用户的字段为空,我正在处理需要生成密钥的用户模型。如果用户已在数据库中拥有密钥,则我们不需要生成新密钥。在哪里以及最好的方法是什么?
一:
没有存储在数据库中的密钥的用户:
模型应该生成一个新密钥并将其保存给用户。
两个
用户已使用数据库中的密钥:
模型不应该改变任何东西,除了保存已经修改的内容。
答案 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的数据。