model - cakePHP 1.3 - $this->data -vs- $this->模型->数据

标签 model http-post this cakephp-1.3

在我的 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/

相关文章:

javascript - jquery 的 $.ajax 成功中的 'this' 指的是什么?

mysql - 找不到数据库表 cakephp

model - 如何在odoo模型中保存只读/可编辑错误字段的值?

mysql - 无PK表

ruby-on-rails - 没有要加载的文件,模型/库命名冲突?

python - 使用 django-rest-framework 创建对象后返回 id 值

arrays - Perl - 如何将 2 个数组/列表(如 [ a=>1, b=>2, ... ])连接到一个?

java - 从 HttpPost Android 中提取 URL

javascript - React 中关于上下文 `this` 的最佳实践

javascript - 为什么这个 React 状态数组不填充对象数据?