✏️ Insertar registros con Eloquent

✏️ Insertar registros con Eloquent

En esta lección aprenderás cómo agregar nuevos registros a la base de datos utilizando Eloquent ORM. Laravel ofrece varias formas sencillas y limpias para insertar datos sin necesidad de escribir sentencias SQL manuales.

🧱 1️⃣ Crear un nuevo registro con el método save()

La forma más tradicional de insertar datos con Eloquent es crear una nueva instancia del modelo, asignar valores y guardar con save():

use App\Models\Producto;

$producto = new Producto();
$producto->nombre = 'Monitor LED 24 pulgadas';
$producto->precio = 149.99;
$producto->stock = 10;
$producto->save();
        

💡 Este método inserta un nuevo registro en la tabla productos automáticamente, usando la conexión definida en .env.

⚡ 2️⃣ Crear registros con el método create()

Laravel permite crear registros directamente con el método create(), que es más compacto y rápido:

Producto::create([
    'nombre' => 'Ratón inalámbrico',
    'precio' => 19.90,
    'stock' => 30
]);
        

📘 Para usar create() debes permitir la asignación masiva configurando el atributo $fillable en tu modelo:

class Producto extends Model
{
    protected $fillable = ['nombre', 'precio', 'stock'];
}
        

⚠️ Si no defines $fillable, Laravel bloqueará la inserción masiva por seguridad (protección contra Mass Assignment).

🧰 3️⃣ Insertar múltiples registros a la vez

Si necesitas insertar varios registros en una sola operación, puedes usar el método insert() de Eloquent o del Query Builder:

Producto::insert([
    ['nombre' => 'Teclado mecánico', 'precio' => 59.99, 'stock' => 15],
    ['nombre' => 'Auriculares gamer', 'precio' => 89.50, 'stock' => 20],
    ['nombre' => 'Webcam HD', 'precio' => 39.99, 'stock' => 25],
]);
        

💡 insert() no ejecuta los eventos de Eloquent ni retorna modelos; es útil para inserciones masivas simples.

📦 4️⃣ Insertar desde un formulario

En la práctica, los datos a insertar suelen provenir de un formulario HTML. Así podríamos manejarlo en el controlador:

public function store(Request $request)
{
    Producto::create([
        'nombre' => $request->nombre,
        'precio' => $request->precio,
        'stock' => $request->stock
    ]);

    return redirect()->route('productos.index')
                     ->with('success', 'Producto agregado correctamente.');
}
        

Y en la vista Blade del formulario:

@csrf

🔐 El uso de @csrf protege el formulario contra ataques CSRF (Cross-Site Request Forgery).

✅ Conclusión

  • ✏️ Puedes insertar registros con save() o con create().
  • ⚙️ Define el arreglo $fillable para habilitar la asignación masiva.
  • 📦 Usa insert() para operaciones en lote sin sobrecarga de eventos.
  • 💡 Laravel facilita el trabajo con formularios y protege tus datos automáticamente.

En la próxima lección veremos cómo actualizar registros con Eloquent de forma sencilla y segura.



Publicar un comentario

0 Comentarios