es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Insertar datos de una matriz en filas separadas en un campo distinto de la base de datos en Laravel.

Estoy tratando de insertar un array de datos en la base de datos, al enviar el formulario con el siguiente campo de entrada (Nombre, Edad, Cantidad), pero estoy obteniendo un error de “Conversión de array a cadena”, así que agregué json_encode() a la variable para evitar el error, pero el problema ahora es que al insertar los datos del array en la base de datos, estos se están insertando en la misma fila. Quiero que se inserten en filas diferentes del mismo campo, vea la siguiente imagen gracias.

[B is the result I want to get]

[Controller]

public function store(Request $request)
{

$userid = rand(10000,99999);
$username = $request->get('uname');
$userage = json_encode($request->get('uage'));
$useramount = json_encode($request->get('uamount');


if (isset($username)){
    foreach ( $request->get('uname') as $username) {
        $add[] = [
            'user_id' => $userid,
            'user_name' => $username,
            'user_age' => $userage,
            'user_amount' => $useramount,
        ];
    }
    Person::insert($add);
}

}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para insertar datos de matrices en la base de datos en diferentes filas del mismo campo, debes modificar el código en el controlador de la siguiente manera:

    public function store(Request $request)
    {
        $userid = rand(10000,99999);
        $usernames = $request->get('uname');
        $userages = $request->get('uage');
        $useramounts = $request->get('uamount');
        $add = [];
    
        foreach ($usernames as $key => $username) {
            $add[] = [
                'user_id' => $userid,
                'user_name' => $username,
                'user_age' => $userages[$key],
                'user_amount' => $useramounts[$key],
            ];
        }
        Person::insert($add);
    }
    

    Ten en cuenta los siguientes cambios:

    1. En lugar de codificar cada campo de entrada por separado, ahora obtendremos todos los campos de entrada como matrices utilizando el método get().
    2. Hemos inicializado una matriz vacía $add para almacenar los datos que insertaremos en la base de datos.

    3. Estamos utilizando un bucle foreach para iterar a través de la matriz de nombres de usuario y crear una matriz para los datos de cada usuario.

    4. Insertamos la matriz de datos en $add utilizando la sintaxis [].

    5. Finalmente, insertamos todos los datos en $add en la base de datos utilizando el método insert().

    Con estos cambios, deberías poder insertar datos de matrices en la base de datos en diferentes filas del mismo campo.

Comments are closed.