F3 ORM 添加新记录省略部分字段
F3 ORM add new record omitting some fields
我有一个 postgres table,其中有一些 "defaulted" 字段,例如 date_created,默认情况下会自动接收 current_timestamp。
或从数据库中定义的序列获取其值的 ID 字段。
告诉 ORM 模块在生成 INSERT 语句时不包括这两个字段的语法(如果可能)是什么?
假设您使用 HTML 表单向表中添加新记录,请按照以下步骤操作;
- 在表单中,省略这些 'defaulted' 字段,即仅添加您要提交的字段
创建一个函数类似于下面的模型
public function add() {
$this->copyFrom ( 'POST' );
$this->save ();
}
创建将表单链接到此函数的路由
您可以使用函数作为第二个参数来删除字段:
$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')));
});
我有一个 postgres table,其中有一些 "defaulted" 字段,例如 date_created,默认情况下会自动接收 current_timestamp。
或从数据库中定义的序列获取其值的 ID 字段。
告诉 ORM 模块在生成 INSERT 语句时不包括这两个字段的语法(如果可能)是什么?
假设您使用 HTML 表单向表中添加新记录,请按照以下步骤操作;
- 在表单中,省略这些 'defaulted' 字段,即仅添加您要提交的字段
创建一个函数类似于下面的模型
public function add() { $this->copyFrom ( 'POST' ); $this->save (); }
创建将表单链接到此函数的路由
您可以使用函数作为第二个参数来删除字段:
$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')));
});