经过大量调试后,我注意到 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
如果这是默认行为 - 我如何在不更改其他模型的情况下将数据读取()到不同的实例中?我真的需要手动创建一个新的“用户”实例并将其存储在某处$instance
以避免这种行为吗?这对我来说听起来很丑陋。