F3 ORM 添加新记录省略部分字段

F3 ORM add new record omitting some fields

我有一个 postgres table,其中有一些 "defaulted" 字段,例如 date_created,默认情况下会自动接收 current_timestamp。

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

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

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

  1. 在表单中,省略这些 'defaulted' 字段,即仅添加您要提交的字段
  2. 创建一个函数类似于下面的模型

    public function add() {
        $this->copyFrom ( 'POST' );
        $this->save ();
    }
    
  3. 创建将表单链接到此函数的路由

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

$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')));
});