为什么在模型中取消设置数据不会影响控制器


Why unsetting data in model does not affect controller?

beforeSave()回调中,我取消设置一个字段执行:

unset($this->data['Company']['myField']);

然后,在我的公司控制器中,如果我这样做:

保存()后的debug($this->request->data)

我仍然可以在模型中看到我未设置的字段。

似乎更改只影响模型范围,而不影响控制器。

如何将我的$this->request->data更新为模型中的数据?

感谢

这是基本的OOP。如果您不传递对象(而是传递数据数组),那么您本身就不能期望通过引用传递。因此,对模型中数据的修改也不能更改请求对象中的数据。在你通过他们之后,他们就独立了。

如果出于某种原因,你需要更新你的请求对象,你需要再次提取数据:

if ($this->Model->save($this->request->data)) {
    // redirect on success?
}
$this->request->data = $this->Model->data;