设置单个数据库行的字段值

时间:2013-04-05 12:09:08

标签: php mysql cakephp model

我正在尝试更新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)时,我没有收到任何错误,但数据库行没有更新。我确保使用debug($profileId)

来使用当前配置文件ID

这里可能出现什么问题?

修改:saveField()的返回值:

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

4 个答案:

答案 0 :(得分:1)

尝试

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

答案 1 :(得分: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);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

试试这个

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

为什么要将验证设置为false?如果省略,会出现错误吗?