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

debug を 2 に設定すると、どの SQL が実行されているかを確認でき、更新が実際に実行されているかどうかを確認できます。

于 2013-04-05T12:19:43.033 に答える
0

これを試して

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

検証を false に設定するのはなぜですか? 省略したらエラーになるの?

于 2013-04-05T13:59:33.557 に答える