Как хранить 2 массива в одной строке на БД - PullRequest
0 голосов
/ 31 мая 2018

Я работаю на Laravel 5.1.Я застрял, пытаясь понять, как хранить входные данные двух массивов в одной строке в БД.Я знаю, как хранить только один массив.

$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 голосов
/ 31 мая 2018

Было бы лучше, если бы вы могли обновить структуру объекта запроса, так как должен быть один массив, и каждый индекс массива будет иметь значения для суммы и поступления, а не отдельные массивы суммы и поступления

$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
  ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...