CakePHP Model :: save()将字段重置为默认值

JD *_*cks 1 cakephp model cakephp-1.3

当我在MySQL数据库中保存(更新)字段时Model->save(),如果我没有为具有默认值设置的字段指定值,则将其重置为默认值.

即使已经存在该字段的值,这也是这样做的.

例如,考虑以下代码:

$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);
Run Code Online (Sandbox Code Playgroud)

在此代码中,它会检查用户是否已存在传递的电子邮件地址.如果是,请使用传递的信息更新该用户,否则创建新用户.

但是我在users表中有一个字段叫做role默认值customer

没有设置值role,$this->data因此在创建新用户时,role会自动设置为customer.

但是,在更新现有用户时,即使他们还有像" admin " 这样的角色,它仍会将值重置为customer.

我不知道为什么会这样.我没有专门设置的其他字段(没有默认值)保持其值.那么为什么默认值的字段会被重置?

Hen*_*nri 5

我拿到了这个!你需要在保存之前设置它:

$this->CustomCart->User->create(false);
Run Code Online (Sandbox Code Playgroud)

没有假蛋糕不知何故猜测模型应该是什么样子.