【问题标题】:Problem with updating record in database更新数据库记录的问题
【发布时间】:2011-06-07 08:19:20
【问题描述】:

我在 cakephp 中更新用户数据时遇到问题。

当我提交表单时,我在 $this->data:

中有这些数据
Array
(
    [User] => Array
        (
            [first_name] => Dusan
            [last_name] => Stojanovic
            [native_language_id] => 25
        )
)

但是,当我尝试更新它时:

$this->User->id = $id;
$this->User->save($this->data)

由于验证,模型未保存。他们尝试验证 $this->data 数组中不存在的字段(如无效密码、电子邮件等)。如何解决此问题,以便仅更新 $this->data 数组中存在的字段?

【问题讨论】:

    标签: cakephp cakephp-1.3 cakephp-model validation


    【解决方案1】:

    对于properly do this,您应该将验证规则的on 选项设置为仅create 和/或将require 设置为false

    对于快速修复,请提供您要保存的字段的 $fieldlist

    $this->User->save($this->data, true, array('first_name', 'last_name', 'native_language_id'));
    

    【讨论】:

    • 谢谢,这正是我需要的。实际上,我需要从验证中删除 required 并设置为 allowEmpty。
    【解决方案2】:

    你可以这样做:

    $this->data['User']['id'] = $id
    

    因为 ['id'] cakephp 将数组识别为将更新数据集并且不会创建新数据集的数据。

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2016-01-15
      • 2016-05-19
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多