Разбить массив и вставить в базу данных в laravel - PullRequest
0 голосов
/ 17 января 2019

У меня есть такой массив

$group=[['abc','cde','01/03/2019','01/05/2019'],['123','456','01/23/2019','01/30/2019']];

Я хочу вставить в базу данных 4 поля следующим образом:

field1     field2      field3        field4
 abc         cde     01/03/2019    01/05/2019
 123         456     01/23/2019    01/30/2019

Я пытаюсь этот код:

for($j=1;$j<count($groups);$j++){
    for ($k=0; $k < count($groups[$j]) ; $k++) { 
        $insert = array(
           'activity' => $groups[$j][$k],
           'person' => $groups[$j][$k],
           'startdate' => $groups[$j][$k],
           'finishdate' => $groups[$j][$k]
        );
    DB::table('test_tbl')->insert($insert);
    }
}

любое решение за это спасибо

Ответы [ 4 ]

0 голосов
/ 17 января 2019

использовать array_map ()

array_map(function($item){
   DB::table('table_name')->insert([
      'activity'   => $item[0],
      'person'     => $item[1],
      'startdate'  => $item[2],
      'finishdate' => $item[3]
   ]);
}, $groups);
0 голосов
/ 17 января 2019

Как насчет foreach?

foreach ($group as $item){
  $insert = array(
           'activity' => $item[0],
           'person' => $item[1],
           'startdate' => $item[2],
           'finishdate' => $item[3]
        );
    DB::table('test_tbl')->insert($insert);
    }
}
0 голосов
/ 17 января 2019

Foreach

Я бы предложил вам использовать цикл ForEach:

foreach($group as $item){
  $insert = array(
    'activity' => $item[0],
    'person' => $item[1],
    'startdate' => $item[2],
    'finishdate' => $item[3]
  );

  DB::table('test_tbl')->insert($insert);

}

Таким образом, вам не нужно считать массив, а код красив и аккуратен.

0 голосов
/ 17 января 2019

Я думаю, что самым простым способом в этом случае было бы просто закодировать ваши индексы.

Вроде так:

for($j = 0;  $j  < count($groups); $j++){

  $insert = array(
    'activity' => $groups[$j][0],
    'person' => $groups[$j][1],
    'startdate' => $groups[$j][2],
    'finishdate' => $groups[$j][3]
  );

  DB::table('test_tbl')->insert($insert);

}

В цикле FOR ваш счетчик индекса $j обычно начинается с 0. Так что будьте осторожны с этим в дальнейшем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...