Laravel Nova表单提交时如何忽略无数据库字段的dependsOn字段
解决Laravel Nova提交表单时忽略不存在字段的问题
方法一:使用ignore()方法(Nova 4.x及以上适用)
直接给department_id字段添加->ignore(),明确告诉Nova在保存模型时忽略该字段,不会将其值传递给模型进行数据库操作:
Select::make('department_id') ->onlyOnForms() ->options(\App\Models\Department::pluck('title', 'id')) ->ignore(), // 添加此行忽略字段填充
方法二:使用fillUsing()手动控制填充逻辑
如果你的Nova版本较低没有ignore()方法,可通过fillUsing()定义空回调,阻止该字段参与模型填充:
Select::make('department_id') ->onlyOnForms() ->options(\App\Models\Department::pluck('title', 'id')) ->fillUsing(function ($request, $model, $attribute) { // 不执行任何填充操作 return; }),
原理说明
Nova默认会将表单所有字段的值尝试填充到模型对应属性中,当字段对应的数据库列不存在时,就会抛出「Column not found」错误。通过上述方法明确跳过该字段的填充逻辑,既能保留其在表单中联动选择sector的功能,又能避免数据库报错。
内容的提问来源于stack exchange,提问作者ghazyy
相关产品推荐
相关产品推荐

