Wai*_*ein 3 laravel laravel-nova
我正在使用 Laravel Nova 开发一个 Web 应用程序。Laravel Nova 很新。我现在遇到数据库关系和字段的问题。我喜欢忽略数据库操作中的字段。这是我的场景。
在 Job 资源中,我有这个 fields 方法
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Name', 'name'),
Text::make('Email', 'email'),
Select::make('Contract Types')->options($array_of_options)//I want to ignore this field
];
}
Run Code Online (Sandbox Code Playgroud)
如您所见,最后一个字段是合同类型。
当我从仪表板创建新作业时,它抛出错误,因为作业模型上没有 contract_types 列。我喜欢从数据库操作中忽略该字段。我怎么才能得到它?
接受的答案并不完全正确。它可以防止将值存储在数据库中,但也会完全隐藏表单中的字段。在一些奇怪的情况下,您可能希望显示未存储的字段。
我的建议是将以下内容添加到资源中(或者如果您希望在多个资源中使用它,则将其放在更可重用的地方):
public static function fill(NovaRequest $request, $model)
{
return static::fillFields(
$request, $model,
(new static($model))->creationFieldsWithoutReadonly($request)->reject(function ($field) use ($request) {
return in_array('ignoreOnSaving', $field->meta);
})
);
}
Run Code Online (Sandbox Code Playgroud)
在相关字段中,您可以添加:
->withMeta(['ignoreOnSaving'])
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个要填写的字段,而无需将其保存在模型中。
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |