【发布时间】:2011-09-16 10:05:44
【问题描述】:
当我通过Model->save() 在 MySQL 数据库中保存(更新)字段时,如果我没有为设置了默认值的字段指定值,那么它会重置为默认值。
即使该字段已经存在值,也会这样做。
例如,考虑以下代码:
$existing_user = $this->CustomCart->User->field('id',array('User.email'=>$this->data['User']['email']));
if($existing_user)
{
//update information
$this->CustomCart->User->id = $existing_user;
}
$this->CustomCart->User->save($this->data);
在此代码中,它会检查是否已存在具有传递电子邮件地址的用户。如果是,则使用传递的信息更新该用户,否则创建一个新用户。
但是我在 users 表中有一个名为 role 的字段,默认值为 customer
$this->data 中没有为 role 设置值,因此在创建新用户时,role 会自动设置为 customer。
但是,在更新现有用户时,即使他们有其他角色,例如“admin”,它仍然会将值重置为 customer。
我不知道这是为什么。我没有专门设置的其他字段(没有默认值)保持它们的值。那么为什么会重置具有默认值的字段呢?
【问题讨论】:
标签: cakephp model cakephp-1.3