【问题标题】:cakephp model: field vs. set methodcakephp 模型:字段与设置方法
【发布时间】:2012-06-02 19:32:21
【问题描述】:

在我的代码中,我通过一些集合调用来设置模型的字段,例如

$model->set('field','value');

如果我理解正确,这将设置 $model->data 数组中的字段值。 紧接着(即相同的请求,但代码的不同部分),我想访问这些字段以进一步处理它们。我认为这是可能的:

$value = $model->field('field');

但这不起作用,因为(正如我通过查看代码发现的那样)field() 正在查询表,但不使用 $model->data 数组。现在我的问题:

  1. 从刚刚由$model->set(...) 设置但尚未保存到表中的模型再次读取字段值的“正确”方法是什么?直接访问$model->data
  2. 是否需要先调用$model->save() 才能再次访问字段值?
  3. 我觉得有一种方法可以对称地设置和检索字段值,而无需在两者之间进行保存。 cakephp 有同感吗? ;)

【问题讨论】:

    标签: cakephp model


    【解决方案1】:
    1. 使用$model->data 访问模型中要保存的当前数据。就像你说的,field() 进行查询。要在保存前修改数据,可以使用Model::beforeSave()回调或在为模型设置数据之前修改数据。

    2. 如果您的意思是在另一个请求中访问,是的,您必须保存。如果您的意思是在保存之前访问当前请求中的数据,则不。有关如何访问/更改数据,请参阅 #1。

    3. 没有必要,请参阅 #1。

    【讨论】:

    • 谢谢,提格朗。根据您的建议,我通过将以下函数添加到我的app_model.php 来解决它:function get($field=null) { return $this->data[$this->alias][$field]; }。所以我有一个冗长的data 访问的快捷方式和一个很好的对应set 函数。
    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多