2014年12月9日

CakePHPで不思議(超怖い)な現象が発生

 CakePHPのモデルのreadメソッドを使うと何故か関係ないレコード(ループ内の中で更新しているので全然会計ないわけではないですが)がUPDATEされてしまう現象が発生してしまっています。

何をしているかといいますと、
 複数のコントローラーから共通の更新処理をしたいのでコンポーネントの中でモデルを操作しています。
 (コンポーネントのinitializeメソッドで呼び出し元のコントローラを引き継いでいます。)

 コンポーネントに引き継がれているコントローラーのモデルのreadメソッドを使うと、何故かそのレコードの全項目が更新されてしまうようなのです。
readメソッドをやめて、findByメソッドを使うようにしたら上手くいったのですが、原因不明でものすごく気持ち悪いです。


public function initialize(Controller $controller) {
    $this->controller = $controller;
}

$rs = $this->controller->XXXXX->read(null, $id);


$rs = $this->controller->XXXXX->findById($id);



何か情報を持っている方いましたら、ご連絡をお待ちしております。

環境を書き忘れました。
簡単に。

CakePHPのバージョンは、2.5.3です。
データベースは、MySQL 5.6.21 (AWSのRDSを使っています。)

0 件のコメント:

コメントを投稿