在我的 Controller 中,我需要验证某些输入值是否与某些数据库表记录值不同。
示例:
具有价格值的输入在更新时必须低于当前价格。所以我要做的是:
$this->Model->read(null, $the_id);
//and then:
if($this->data['Model']['price'] >= $this->Model->data['Model']['Price']) do_stuff();
它有效。但我担心这不是可以信任的东西,因为我发现没有关于此方法的文档。
假设 $this->data
将始终包含提交的数据,并且 $this->Model->data
将始终保存read()
调用的结果(或任何读取相关内容的模型数据)?
最佳答案
$this->data(在 Controller 中)表示来自浏览器的 POST 数据。
$this->Model->data 表示保存到数据库(或由 Controller 在模型中设置)的数据。
如果你要这样做:
$this->Model->set($this->data);
$this->Model->save();
这与:
相同$this->Model->save($this->data);
执行后者会将数据存储在 $this->Model->data 中。如果您要通过行为或其他 beforeSave()
回调操作 $this->Model->data 中的数据,它不会复制到 Controller $this->data
数组。所以要小心。
所以回答你的问题:
假设 $this->data 将始终包含提交的数据是否正确
是的,这是正确的
$this->Model->data 将始终保存 read() 调用的结果(或任何读取相关内容的模型数据)?
是的 - 但您也可以将读取的模型数据直接存储到变量中:
$data = $this->Model->read(null, $id);
请注意,两个数据数组没有链接,模型->数据不会复制回 Controller 中的$this->data
。您需要在 Controller 中手动设置:
$this->data = $this->Model->data;
希望这有帮助。
关于model - cakePHP 1.3 - $this->data -vs- $this->模型->数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22660684/