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行,就搞定了