我正在尝试更新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)
这里可能出现什么问题?
修改:saveField()
的返回值:
array(
'Profile' => array(
'id' => '36',
'modified' => '2013-04-05 14:16:57'
)
)
答案 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?如果省略,会出现错误吗?