"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo insertar varias filas en una base de datos usando Eloquent o Query Builder?

¿Cómo puedo insertar varias filas en una base de datos usando Eloquent o Query Builder?

Publicado el 2024-12-21
Navegar:528

How Can I Insert Multiple Rows into a Database Using Eloquent or the Query Builder?

Insertar varias filas simultáneamente con Eloquent o Fluent

Esta consulta explora cómo insertar varias filas en una base de datos utilizando una única consulta dentro de Eloquent (o fluido) marco. El ejemplo dado recupera datos usando UserSubject::where('user_id', Auth::id())->select('subject_id')->get();. Sin embargo, el resultado deseado requiere insertar estos datos en una tabla separada con una estructura de columnas específica.

Solución:

Eloquent o la consulta facilitan convenientemente la inserción masiva de datos constructor. Considere las siguientes técnicas:

  • Enfoque elocuente:

Utilizar modelo::insert($data); para insertar varias filas. Este enfoque incorpora mutadores, incluidas marcas de tiempo.

  • Enfoque del generador de consultas:

Emplear DB::table('table')->insert ($datos); para insertar filas sin llamar a mutadores.

Ejemplo:

Dada una matriz de datos de filas:

$data = [
    ['user_id'=>'Coder 1', 'subject_id'=> 4096],
    ['user_id'=>'Coder 2', 'subject_id'=> 2048],
    //...
];

Insertarlos usando Eloquent:

Model::insert($data);

Insertarlos usando Query Builder:

DB::table('table')->insert($data);
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3