Estoy tratando de enviar estos datos a una base de datos en Laravel. Mi intención es enviar todo al mismo tiempo, son solo dos filas, pero me gustaría enviarlas juntas, incluso si llegan a 10 filas que puedo enviar.
0: {item: "Electronics", subitem: "Laptop", subitem2: "Hard D", unit: "Length - meter (m)"} 1: {item: "Electronics", subitem: "Laptop", subitem2: "Hard D", unit: "Length - meter (m)"}lo que he probado
for ($i = 1; $i < count($request->all()); $i++) { $answers[] = [ 'item' => $request->item[$i], 'subitem' => $request->subitem[$i], 'subitem2' => $request->subitem2[$i] ];Intenté hacer un bucle for usando el código anterior pero no funciona... obtuve el siguiente error
count(): Parameter must be an array or an object that implements CountableEntonces, después de la discusión en los comentarios, la solución para lo que está tratando de lograr puede ser:
foreach ($request->all() as $data){ Items::insert([ 'item' => $data['item'], 'subitem' => $data['subitem'], 'subitem2' => $data['subitem2'], 'unit' => $data['unit'] ]); }Si no tiene un modelo y literalmente lo inserta usando la fachada DB, entonces puede hacer:
DB::table('items')->insert([ 'item' => $data['item'], 'subitem' => $data['subitem'], 'subitem2' => $data['subitem2'], 'unit' => $data['unit'] ]);Pero debe construir modelos dedicados.
También debe validar su entrada, $request->all() es demasiado general, pero esta es una sugerencia para futuras mejoras y algo a tener en cuenta.
No confíe en los datos que los usuarios envían desde el front-end. El back-end siempre debe validar.
Eche un vistazo a la documentación de laravel aquí: https://laravel.com/docs/8.x/queries#insert-statements
Aquí hay un ejemplo de lo que usan para insertar múltiples registros
DB::table('users')->insert([ ['email' => 'picard@example.com', 'votes' => 0], ['email' => 'janeway@example.com', 'votes' => 0], ]);