2017-06-20 34 views
0

我有一个postgres表,其中有一些“默认”字段,如date_created,它会自动接收current_timestamp作为默认值。F3 ORM添加新记录省略一些字段

或从数据库中定义的序列获取其值的ID字段。

什么是(如果可能的话)告诉ORM模块在生成INSERT语句时不包含这两个字段的语法?

回答

2

您可以使用函数作为第二个参数来删除字段:

$this->copyfrom('POST',function($val) { 
    unset($val['ID']); 
    unset($val['date_created']); 
    return $val 
}); 

或从POST阵列只复制允许字段:

$this->copyfrom('POST',function($val) { 
    return array_intersect_key($val, array_flip(array('name','age'))); 
}); 
0

假设您使用HTML表单向表中添加新记录,请按照以下步骤操作;

  1. 在形式,忽略这些“默认”字段,即只添加要提交
  2. 创建一个功能类似于下面

    public function add() { 
        $this->copyFrom ('POST'); 
        $this->save(); 
    } 
    
  3. 创建一个模型的字段将表单链接到此功能的路径

+0

这些字段被用于更新/删除,从而不能从表格中删除;但是我看到你来自哪里,我想我可以在插入的情况下从POST数组中删除它们。 – Didiergm