在我的控制器中,我需要验证某些输入值是否与某些db-table-records值不同 例如:
具有价格值的输入在更新时必须低于当前价格。所以我所做的是:
$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()
调用的结果(或任何模型数据读取相关内容)是否正确)?
答案 0 :(得分:2)
$ this->数据(在控制器中)表示来自浏览器的POST数据。
$ this->模型 - >数据表示保存到数据库的数据(或由控制器在模型中设置)。
如果你这样做:
$this->Model->set($this->data);
$this->Model->save();
这与:
相同$this->Model->save($this->data);
执行后者会将数据存储在$ this-> Model->数据中。如果您通过行为或其他beforeSave()
回调操作$ this-> Model->数据中的数据,它将不会复制到控制器$this->data
数组。所以要小心。
所以回答你的问题:
假设$ this->数据始终包含提交的数据是否正确
是的,这是正确的
并且$ this->模型 - >数据将始终保存read()调用的结果(或任何模型数据读取相关内容)?
是 - 但您也可以将读取的模型数据直接存储到变量中:
$data = $this->Model->read(null, $id);
请注意,两个数据阵列未链接,Model->数据不会复制回控制器中的$this->data
。您需要在控制器中手动设置:
$this->data = $this->Model->data;
希望这有帮助。