【问题标题】:laravel how to store 2 array into same row on DBlaravel如何将2个数组存储到数据库的同一行中
【发布时间】:2018-05-31 06:37:47
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你想存储两行?
  • @AliN11 一行
  • 使用预期的数据结构发布当前表数据。
  • 这很奇怪。如何在一行中存储两个不同的数组?
  • 合并两个数组然后存储

标签: php arrays laravel laravel-5.1


【解决方案1】:

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

$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
  ]);
}

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 2019-11-12
    • 2023-04-09
    • 2017-01-24
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    相关资源
    最近更新 更多