laravel 版本 6.5.2
laravel-admin 版本 1.5
laravel-admin 的如果想要某个字段不填就提交的话,官方文档上是这么写的
但是,有些字段就是选填的啊,也不想把数据库对应的字段设置为null,查的时候麻烦,下面小改一下
1,我这里对应的是这个资源控制器
$router->resource('resources', ResourceController::class);
2,所以,当表单提交的时候,默认是提交到了store方法,这个方法在下面的路径中
vendor/encore/laravel-admin/src/Controllers/HasResourceActions.php
//就这么3行
public function store()
{
return $this->form()->store();
}
3,上面的代码,调用了下面这个类的store方法,这个方法代码太多,只贴部分代码
vendor/encore/laravel-admin/src/Form.php
DB::transaction(function(){
$inserts = $this->prepareInsert($this->updates);
foreach ($inserts as $column => $value) {
//就是用这个方法,给model设置要保存的字段
$this->model->setAttribute($column, $value);
}
$this->model->save();
$this->updateRelation($this->relations);
});
4,上面的setAttribute方法,在下面这个文件里
vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php
只要在setAttribute方法里加上这3行,就搞定了