0

我正在尝试更新我profiles表上的一行以将用户个人资料图片重置为默认值user.png。我的控制器中有以下操作:

public function deleteProfilePicture() {
    $this->layout = 'ajax';

    // First find the profile ID from the user ID
    $profileId = $this->Profile->find('first', array(
        'condition' => array('User.id' => $this->Auth->user('id')),
        'fields' => array('Profile.id'),
        'recursive' => -1
    ));

    $this->Profile->id = $profileId['Profile']['id'];
    $this->Profile->saveField('picture', 'user.png', false);
}

但是,当我请求 URL ( /profile/deleteProfilePicture) 时,我没有收到任何错误,但数据库行没有更新。我已确保使用当前配置文件 ID 使用debug($profileId).

这里可能出了什么问题?

编辑:的返回值saveField()

array(
    'Profile' => array(
        'id' => '36',
        'modified' => '2013-04-05 14:16:57'
    )
)
4

4 回答 4

1

我在您的代码中没有看到任何错误。尝试使用它查看正在执行的查询

$log = $this->Model->getDataSource()->getLog(false, false);
  debug($log);

如果您发现有问题,请根据结果更改您的查询。

或者尝试使用这个

$data['Profile']['id']=$profileId['Profile']['id'];
$data['Profile'['picture']='user.png';
$this->Profile->save($data);
于 2013-04-06T05:15:26.393 回答
1

尝试

$this->Profile->id = $profileId['Profile']['id']; $this->Profile->set(array( 'picture' => 'user.png' )); $this->Post->save();

于 2013-04-05T12:35:23.880 回答
0

尝试这个

$this->Profile->read(null, $profileId['Profile']['id']);
$this->Profile->saveField('picture', 'user.png', false);

为什么将验证设置为假?如果你忽略它,你会得到一个错误吗?

于 2013-04-05T13:59:33.557 回答
0

如果将 debug 设置为 2,您可以看到正在执行的 SQL,看看您的更新是否真的触发了。

于 2013-04-05T12:19:43.033 回答