1

かなりのデバッグを行った後、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この動作を避けるために、新しい「ユーザー」インスタンスを手動で作成し、どこかに保存する必要がありますか? それは私にはかなり醜く聞こえます。

4

1 に答える 1