代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

更新大型CakePHP模型,但*不*接触某些字段?

  •  2
  • anonymous coward  · 技术社区  · 15 年前

    使用cakephp1.3

    我在CakePHP中有一个相当大的模型,我希望在表单页面上有一些隐藏的元素,以便在保存之前(手动)进行比较/验证,但是在执行 saveAll() (通过验证),我不希望这些字段出现(基本上是为了避免它们被更新)。

    处理这个问题的正确方法是什么? 将它们从 $this->data 在交给你之前 全部保存() ?

    2 回复  |  直到 15 年前
        1
  •  3
  •   deceze    15 年前

    使用 'fieldlist' option :

    $this->Model->saveAll($data, array('fieldlist' => array('fields', 'to', 'save')));
    

    $fields = array_keys($this->Model->_schema);
    $fieldsNotToSave = array('field1', 'field2');
    $fieldsToSave = array_diff($fields, $fieldsNotToSave);
    
        2
  •  3
  •   Stephen    15 年前

    我通常会用 unset() saveAll() . 仔细想想,这是最简单的方法。也就是说,除非要手动命名与默认值不同的隐藏输入字段 data[Model][field] 由窗体助手生成的。

    但是你必须手动访问它们并手动验证它们。

    取消设置() 快速清晰。