Laravel:检查输入字段为空或未提交

时间:2018-10-23 19:34:06

标签: php laravel input

我在不同的站点上有多种表格。它们都以相同的路线结束。 用户可以将某些类型的模型设置为null。 并非每个表单都提交模型的所有字段。例如:

模型具有以下字段:Name, Adress, Phone, Text

表格1提交了Name, Adress, Phone

表格2提交了Adress, Text

如果我提交表格1,我的模型将如下所示:

$model->name = Name;
$model->adress = Adress;
$model->phone = Phone;
$model->text = null;

但是我不想覆盖Text。我希望Text是提交之前的值。但是,如果我提交表格2,我想更改文本,甚至将其设置为null。

但是,如何检查表单名称是否在提交的表单中(即使实际上是null)?

目前,这是我在控制器中的更新例程:

...
$this->artSkill = ($request->artSkill) ? $request->artSkill : null;
$this->craftsmanSkill = ($request->craftsmanSkill) ? $request->craftsmanSkill : null;
$this->ownInitiativeSkill = ($request->ownInitiativeSkill) ? $request->ownInitiativeSkill : null;
...

2 个答案:

答案 0 :(得分:0)

您可以使用模型的update()方法,仅传递不为空的值:

https://laravel.com/docs/5.7/eloquent#updates

例如

$input = $request->all();
$input = array_filter($input);
$model->update($input);

答案 1 :(得分:0)

您可以选择以下逻辑:

$model->text = $request->filled('text') ? $request->get('text', $model->text) : null;

如果请求中不存在text,则其值为空。

如果text存在且其值为空白,则将其保留为原始值。