かなりのデバッグを行った後、CakePHP の (2.x) モデルの使用法に非常に奇妙な動作があることに気付きました。
モデル ID を変更して read() を使用すると、同じモデルとの関係を持つ完全に異なるオブジェクト インスタンスで、古いモデル データが上書きされます。
// set the user, by using the 'User' model
$this->User->id = 1;
$this->User->read();
print_r($this->User->data); // works correctly
$instance = new Notification(); // this has a relation to the 'User' model
print_r($instance->User->data); // == $this->User->data! why?!
$instance->User->id = 2;
$instance->User->read();
print_r($this->User->data); // == $instance->User->data!
それらのモデルが互いに接続されているのはなぜですか? 新しいインスタンスなので、完全に分離する必要はありませんか? つまり、 $this ではなく、通知の「ユーザー」モデルを設定しています
そして、それがデフォルトの動作である場合、他のモデルを変更せずに、データを異なるインスタンスに read() するにはどうすればよいですか? $instance
この動作を避けるために、新しい「ユーザー」インスタンスを手動で作成し、どこかに保存する必要がありますか? それは私にはかなり醜く聞こえます。