PHP Как сохранить данные из массива в mysql с помощью laravel 5

Я получаю массив в массиве данных «Цилиндры» из POST:

Array ( [serie] => Array ( [0] => 1234 [1] => 3545 ) [seriesap] => Array ( [0] => 1234234 [1] => 345345 ) [type] => Array ( [0] => 4546 [1] => csdfwe ) [admission] => Array ( [0] => 04-05-2015 [1] => 04-05-2015 ) [invoice] => Array ( [0] => fei76867 [1] => feiasodjf ) ) 

Теперь поля внутри ключей: серийный, тип, вход и т. Д. Не меняются, но информация внутри этих клавиш меняется, я имею в виду, что там может быть даже 15 предметов.

В конце мне нужно сохранить в базу данных:

 $cylinder = new Cylinder(); $cylinder->serie = ??; $cylinder->seriesap = ??; $cylinder->type = ??; $cylinder->admission = ??; $cylinder->invoice = ??; $cylinder->save 

Как я могу выполнить эту задачу и сохранить все цилиндры?

Я пробовал все предсказания, что я мог думать, что ничего не работает.

/ edit /

Это то, что я делаю до сих пор:

 $cyldata = $_POST['cylinder']; //this is the post from top. $num_elements = 0; while($num_elements < count($cyldata['serie'])){ $cylinder = new Cylinder(); $cylinder->serie = $cyldata['serie'][$num_elements]; $cylinder->type = $cyldata['type'][$num_elements]; $cylinder->admission = $cyldata['admission'][$num_elements]; $cylinder->seriesap = $cyldata['seriesap'][$num_elements]; $cylinder->save $num_elements++; } 

Но это кажется уродливым, все эти сбережения не чувствуют себя хорошо. Грязное решение, если вы спросите меня.

Во-первых, вам нужно преобразовать ваши входные данные в другой формат:

 $cyldata = $_POST['cylinder']; //this is the post from top. $num_elements = 0; $sqlData = array(); while($num_elements < count($cyldata['serie'])){ $sqlData[] = array( 'serie' => $cyldata['serie'][$num_elements], 'type' => $cyldata['type'][$num_elements], 'admission' => $cyldata['admission'][$num_elements], 'seriesap' => $cyldata['seriesap'][$num_elements], 'invoice' => $cyldata['invoice'][$num_elements], // you miss this field, aren't you? 'created_at' => Carbon\Carbon::now(), // only if your table has this column 'updated_at' => Carbon\Carbon::now(), // only if your table has this column ); $num_elements++; } 

Во-вторых, используйте построитель запросов Fluent для создания вставки в пакет:

 DB::table('table_name')->insert($sqlData); 

Примечание: created_at и updated_at появляются здесь, если ваша таблица имеет это поле. При работе с моделью Eloquent это поле обновляется автоматически. Однако мы не используем Eloquent, поэтому нам нужно назначить значение для этого поля вручную.

Поскольку у вас есть массив для вставки данных в базу данных, вы можете попробовать create метод из модели:

 Cylinder::create($array); 

но на самом деле нужен key массива, который будет field_name в вашей базе данных. Или вы можете сделать это с помощью построителя запросов:

 DB::table('table_name')->insert($array); 

и снова требуется установить key массива как field_name в вашей базе данных.

Я не знаю, что заставило вас использовать глобальный массив $_POST , чтобы получать данные от пользователя.

Возможно, это то, чего вы хотите.

 /** * Store the form inputs in the table * * @param Request $request */ public function store( Request $request ) { $data = Input::get(); for($i = 0; $i < count($data['serie']); $i++) { $c = new Cylinder(); $c->serie = $data['serie'][$i]; $c->type = $data['type'][$i]; $c->admission = $data['admission'][$i]; $c->seriesap = $data['seriesap'][$i]; $c->save(); // fixed typo } }