自定义主键的解决方法
大部分情况下你的模型主键是数据库自增来维护的,另外两个时间相关的字段created_at
和updated_at
也是模型来维护的,不需要在页面上设置,所以在Form中展示这些字段时,在创建的页面不会显示这三个字段(id
、created_at
、updated_at
),如果你的情况比较特殊需要自己填入主键值,可以参考下面的方式
先上代码:
protected function form($creating = false)
{
....
if ($creating) {
$form->text('gid', 'ID');
}
$form->saving(function ($form) {
$form->input('id', request()->get('gid'));
});
....
}
给控制器的form方法增加一个参数来标记是否是创建状态,如果是创建状态,给form表单增加一个gid
字段,用来填写你的主键值,字段名可以随便起,然后在saving回调中将这个字段的提交值赋值给主键字段(id
)即可,然后在控制器的create
方法中调用form方法时,传入true
以表示是创建状态
public function create(Content $content)
{
return $content
->header('Header')
->description('description')
->body($this->form(true));
}
这样就可以解决了,在一些其它场景里面也可以通过设置不存在的字段,并且在回调中接收它来实现你的其它逻辑。