当我通过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);
在此代码中,它会检查用户是否已存在传递的电子邮件地址。如果是,请使用传递的信息更新该用户,否则创建新用户。
但是我在用户表中有一个名为role
的字段,默认值为customer
role
中的$this->data
没有设置值,因此在创建新用户时,role
会自动设置为客户。
但是,在更新现有用户时,即使他们还有“ admin ”之类的其他用户,它仍会将值重置为客户。
我不知道为什么会这样。我没有专门设置的其他字段(没有默认值)保持其值。那么为什么默认值的字段会被重置?
答案 0 :(得分:5)
我得到了这个!你需要在保存之前设置它:
$this->CustomCart->User->create(false);
没有假蛋糕不知何故猜测模型应该是什么样子。
答案 1 :(得分:0)
我认为field()是你为了根据某些条件获得单个字段而创建的函数
这段代码怎么样?:
$existing_user = $this->CustomCart->User->field('id',array('User.email'=>$this->data['User']['email']));
if($existing_user !== false){
//update information
$this->CustomCart->User->id = $existing_user;
$this->data['User']['role'] = "admin";
}
$this->CustomCart->User->save($this->data);
如果此代码无法正常工作,我会感到非常惊讶
祝你好运!