laravel如何将2个数组存储到DB上的同一行

时间:2018-05-31 06:37:47

标签: php arrays laravel laravel-5.1

我在laravel 5.1上工作。我一直想着如何将我的2个数组输入存储到DB上的同一行。我只知道如何存储一个数组。

$amount[] = $request->amount;
$receipt[] = $request->receipt;

foreach ($amount as $key => $value) {
  $reimbursement_item = ReimbursementItem::create([
     'user_id' => $user->id,
   'amount' => $value,
  ]);
}

DB structure and aspect result:
id  user_id  amount  receipt
--  -------  ------  --------------
1    32      40.00   /images/r1.jpg
2    24      60.00   /images/r2.jpg

1 个答案:

答案 0 :(得分:2)

如果您可以更新您的请求对象结构,那就更好了,就像应该有一个数组,并且每个数组索引都有值和收据的值而不是单个数量和收据数组

$data[] = $request->data;
foreach ($data as $key => $value) {
  $reimbursement_item = ReimbursementItem::create([
     'user_id' => $user->id,
   'amount' => $value['amount'],
   'receipt' => $value['receipt']
  ]);
}

另一种方法是,如果每个数组$amount$receipt的长度相同且值正确,您也可以在单循环中更新数据,如

foreach ($amount as $key => $value) {
  $reimbursement_item = ReimbursementItem::create([
     'user_id' => $user->id,
   'amount' => $value,
      'receipt' => (isset($receipt[$key]))? $receipt[$key]: null
  ]);
}