仅使用非空表单字段替换$ request-> all()

时间:2018-04-18 13:35:23

标签: laravel

是否可以将以下行中的$ request-> all()替换为仅提交表单中不为空的字段。

$product = Product::create($request->all());

当某些表单字段为空时,生成的查询类似于

insert into `products` (`name`, `companyname`, `ip`, `host`, `status`, `language`, `updated_at`, `created_at`) values (efesar, ewrewrewre, , , , , 2018-04-18 10:29:11, 2018-04-18 10:29:11))

那就是错误。

2 个答案:

答案 0 :(得分:2)

这将只为您提供值为

的字段
$data = collect($request->all())->filter()->toArray();
$product = Product::create($data);

但是您应该仅从请求中获取适合您的产品模型的字段,或者更好,为它们添加验证。根据您的需要,您可能需要将某些表字段更改为可为空,以便能够保存空字段。

答案 1 :(得分:1)

提交空字段不是问题。只需在迁移文件中使它们可以为空:

$table->string('ip')->nullable();
$table->string('host')->nullable();
$table->string('status')->nullable();
$table->string('language')->nullable();