代码之家  ›  专栏  ›  技术社区  ›  joni

CakePHP model->save():保存除某些排除字段外的所有字段

  •  0
  • joni  · 技术社区  · 14 年前

    我想保存除一些排除的字段以外的所有字段。我知道我可以这样做

    $this->Blah->save($this->data,false,$fieldList)
    

    其中$fieldList包含表中的所有数据字段,但我不想保存这些字段。我有一些表包含任何数据字段,我不想在每个控制器操作中从头开始编写整个列表(是的,不应保存的字段因操作而异)。此外,它看起来凌乱和混乱。 cakePHP是否提供了可用于本案例的东西? 如果不是,我想,我必须自己实现它,向每个控制器添加$fieldList属性并执行类似操作(丑陋的黑客攻击解决方案):

    $tmp = $fieldList;
    unset(array_search('fieldtoexclude', $tmp));
    $this->Blah->save($this->data,false,$tmp);
    

    致以最诚挚的问候

    2 回复  |  直到 14 年前
        1
  •  1
  •   mark    14 年前
    function blacklist($blackList = array()) {
        return array_diff(array_keys($this->schema()), $blackList);
    }
    

    应该工作吗

    请看一下: http://www.dereuromark.de/2010/09/21/saving-model-data-and-security/

        2
  •  0
  •   Leo    14 年前

    如果字段列表从一个动作变为另一个动作,那么您正在寻找一个能读懂您思想的automagic函数。蛋糕不能提供这些!

    如果只有一个控制器,则将列表定义为类变量,或者对模型上的save操作进行子类化。