首页 > 解决方案 > 在 Laravel 存储方法中的 foreach 中保存请求变量

问题描述

从表单中收集 2 个值作为变量,其余作为数组。然后将值保存在 store 方法中的 foreach 循环中。

数组值没有问题,但对于单个变量,值显示为 null 以我尝试的方式。

我试图在 foreach 循环中保存$start$end值。代码如下:

$start = $request->start;
$end = $request->end;

foreach ($request->user_id as $key => $val) {
  $bill = new UserBill;
    if (is_array($request->checked) && in_array($val, $request->checked)) {
       $bill->start = $start;
       $bill->end = $end;
       $bill->amount = $request->amount[$key];
       $bill->package = $request->package[$key];
       $bill->package_type = $request->package_type[$key];
       $bill->user_id = $val;
       $bill->save();
    }
}

请帮忙。

标签: phplaravelforeach

解决方案


您可以尝试将信息直接发送到 save 方法,而不是填充对象。

foreach ($request->user_id as $key => $val) {
  $bill = new UserBill;
    if (is_array($request->checked) && in_array($val, $request->checked)) {
       $bill->save([
            "start" => $request->start,
            "end" => $request->end,
            "amount" => $request->amount[$key],
            "package" => $request->package[$key],
            "package_type" => $request->package_type[$key],
            "user_id" => $val
       ]);
    }
}

只要确保所有变量都有内容。您可以使用 dd() 帮助程序进行检查

dd($request->toArray()); //toArray() for an easier looking on the output

推荐阅读