SyntaxHighlighter

2014年3月19日水曜日

CakePHP で modified が更新されない

すっかりCakePHPにおまかせで、その機能を疑ってもいなかったんですが。

よくよく見てみると、パスワード変更してusersテーブル見てみたら、modifiedが更新されてないでやんの。('A`)

ググってみたりしたけどイマイチわからず。


で、行き着いたところが、「updateするmodelのmodifiedに値が入ってると、その値でアップデートする」ということだ。


  $this->loadModel('User');
  $userInfo = $this->User->findById($this->Session->read('Auth.User.id'));
なんてやっといて、
  $userInfo['User']['password'] = $newPassword1;
  if (!$this->User->save($userInfo, array(
        'validate' => true,
        'fieldList' => array('password')))) {
      $this->tx->rollback();
      return $this->passwordChangeError('パスワードの変更でエラーが起きました。');
  }
ってやると、findByした時の値が入ってるから、更新されない。だからsave前にnullを突っ込んでやる。
  $userInfo['User']['password'] = $newPassword1;
  $userInfo['User']['modified'] = null; // ######################### ここ #####################
  if (!$this->User->save($userInfo, array(
        'validate' => true,
        'fieldList' => array('password')))) {
      $this->tx->rollback();
      return $this->passwordChangeError('パスワードの変更でエラーが起きました。');
  }
これで更新されるようになったよ… なんかイマイチな気がする。 他に手があるんだろうか?

1 件のコメント: