自定义主键的解决方法

大部分情况下你的模型主键是数据库自增来维护的,另外两个时间相关的字段created_atupdated_at也是模型来维护的,不需要在页面上设置,所以在Form中展示这些字段时,在创建的页面不会显示这三个字段(idcreated_atupdated_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));
}

这样就可以解决了,在一些其它场景里面也可以通过设置不存在的字段,并且在回调中接收它来实现你的其它逻辑。