Laravel ofrece una forma poderosa y flexible para gestionar bases de datos utilizando su ORM Eloquent. En este post, te mostraré cómo convertir el siguiente código SQL en su equivalente en Laravel mediante migraciones, modelos y controladores. Vamos a construir la funcionalidad completa para la tabla aseguradoras
.
Código SQL original
El siguiente código SQL crea una tabla llamada aseguradoras
con varios campos, como clave_aseguradora
, nombre
, fecha_inicial
, fecha_final
, y no_seguro
CREATE TABLE aseguradoras ( clave_aseguradora int(11) NOT NULL, nombre VARCHAR(255) NOT NULL, fecha_inicial datetime NOT NULL, fecha_final datetime NOT NULL, no_seguro varchar(255) NOT NULL, PRIMARY KEY (clave_aseguradora) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; COMMIT;
Este código SQL crea una tabla llamada aseguradoras
con los siguientes campos:
clave_aseguradora
. Un entero que sirve como clave primaria.nombre
. Un campo de texto (VARCHAR) de longitud máxima de 255 caracteres.fecha_inicial
. Un campo de tipo datetime para la fecha inicial.fecha_final
.Un campo de tipo datetime para la fecha final.no_seguro
. Un campo de texto para el número de seguro.
Paso 1. Crear la migración
Laravel ofrece una herramienta llamada Artisan que facilita la creación de migraciones, modelos y controladores. Empezaremos creando la migración correspondiente a la tabla aseguradoras
.
1.1. Crear la migración, modelo y controlador
Ejecuta el siguiente comando para generar una migración, el modelo Aseguradora
y el controlador AseguradoraController
:


Este comando generará:
- Migración. Un archivo de migración en el directorio
database/migrations/
. - Modelo. El modelo
Aseguradora
en el directorioapp/Models/
. - Controlador. Un controlador llamado
AseguradoraController
en el directorioapp/Http/Controllers/
.
1.2. Editar la migración
Vamos a editar el archivo de migración que se encuentra en database/migrations/
, para que coincida con la estructura de la tabla SQL proporcionada.

use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateAseguradorasTable extends Migration { public function up() { Schema::create('aseguradoras', function (Blueprint $table) { $table->integer('clave_aseguradora')->primary(); // Clave primaria $table->string('nombre', 255); // Nombre VARCHAR(255) $table->dateTime('fecha_inicial'); // Fecha inicial DATETIME $table->dateTime('fecha_final'); // Fecha final DATETIME $table->string('no_seguro', 255); // No. de seguro VARCHAR(255) $table->timestamps(); // Campos created_at y updated_at }); } public function down() { Schema::dropIfExists('aseguradoras'); } }

1.3. Ejecutar la migración
Una vez que hayas editado la migración, ejecuta el siguiente comando para crear la tabla aseguradoras
en tu base de datos:
php artisan migrate


Esto creará la tabla aseguradoras
con la estructura definida.
Paso 2. Crear el modelo Aseguradora
El modelo en Laravel es una representación de una tabla en la base de datos y te permite interactuar con los registros de manera más sencilla. Ahora vamos a definir el modelo Aseguradora
.
Modelo Aseguradora
Abre el archivo app/Models/Aseguradora.php
y edítalo para reflejar la estructura de nuestra tabla:

namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Aseguradora extends Model { use HasFactory; // Nombre de la tabla protected $table = 'aseguradoras'; //Indicar la clave primaria correcta protected $primaryKey = "clave_aseguradora"; // Clave primaria no auto-incremental public $incrementing = false; // Tipo de clave primaria protected $keyType = 'int'; // Los campos que pueden asignarse de forma masiva protected $fillable = [ 'clave_aseguradora', 'nombre', 'fecha_inicial', 'fecha_final', 'no_seguro', ]; // Indicamos que las fechas deben ser tratadas como objetos de tipo Carbon protected $dates = ['fecha_inicial', 'fecha_final']; }

Explicación
- $table. Define el nombre de la tabla en la base de datos.
- $primaryKey. Define el nombre del campo que es llave primaria.
- $incrementing = false. Especifica que la clave primaria (
clave_aseguradora
) no es auto-incremental. - $keyType = ‘int’. Define que la clave primaria es de tipo entero.
- $fillable. Lista de los campos que pueden ser asignados masivamente.
Paso 3. Crear el controlador AseguradoraController
El controlador gestionará las operaciones CRUD (Crear, Leer, Actualizar y Eliminar) para la tabla aseguradoras
. Laravel genera un controlador de recursos que incluye estos métodos básicos.
Abre el archivo app/Http/Controllers/AseguradoraController.php
y edítalo para que contenga los métodos necesarios.

3.1. Mostrar todos los registros (método index
)
public function index() { // Obtener todos los registros $aseguradoras = Aseguradora::all(); // Pasar los registros a la vista return view('aseguradoras.index', compact('aseguradoras')); }

3.2. Mostrar el formulario para crear un nuevo registro (método create
)
public function create() { // Mostrar el formulario de creación return view('aseguradoras.create'); }

3.3. Guardar un nuevo registro (método store
)
public function store(Request $request) { // Validar los datos recibidos del formulario $request->validate([ 'clave_aseguradora' => 'required|integer', 'nombre' => 'required|string|max:255', 'fecha_inicial' => 'required|date', 'fecha_final' => 'required|date', 'no_seguro' => 'required|string|max:255', ]); // Crear un nuevo registro Aseguradora::create($request->all()); // Redirigir a la lista de aseguradoras con un mensaje de éxito return redirect()->route('aseguradoras.index')->with('success', 'Aseguradora creada con éxito'); }

3.4. Mostrar un registro específico (método show
)
public function show(Aseguradora $aseguradora) { return view('aseguradoras.show', compact('aseguradora')); }

3.5. Mostrar el formulario de edición (método edit
)
public function edit(Aseguradora $aseguradora) { return view('aseguradoras.edit', compact('aseguradora')); }

3.6. Actualizar un registro existente (método update
)
public function update(Request $request, Aseguradora $aseguradora) { // Validar los datos recibidos $request->validate([ 'clave_aseguradora' => 'required|integer', 'nombre' => 'required|string|max:255', 'fecha_inicial' => 'required|date', 'fecha_final' => 'required|date', 'no_seguro' => 'required|string|max:255', ]); // Actualizar el registro $aseguradora->update($request->all()); // Redirigir con un mensaje de éxito return redirect()->route('aseguradoras.index')->with('success', 'Aseguradora actualizada con éxito'); }

3.7. Eliminar un registro (método destroy
)
public function destroy(Aseguradora $aseguradora) { $aseguradora->delete(); // Eliminar el registro return redirect()->route('aseguradoras.index')->with('success', 'Aseguradora eliminada con éxito'); }




Paso 4. Crear las vistas
Laravel utiliza Blade como motor de plantillas para las vistas. Vamos a crear las vistas necesarias para las operaciones CRUD.
4.1. Vista para mostrar todos los registros (index.blade.php
)



Paso 5. Definir las Rutas
Laravel permite definir las rutas de forma automática utilizando el controlador de recursos. Asegúrate de que las rutas estén definidas en routes/web.php
use App\Http\Controllers\AseguradoraController; Route::resource('aseguradoras', AseguradoraController::class);

Esto creará automáticamente todas las rutas necesarias para las operaciones CRUD.
Conclusión
En este post, hemos aprendido cómo convertir un código SQL en su equivalente en Laravel utilizando migraciones, modelos y controladores. Implementamos las operaciones CRUD completas y creamos vistas usando Blade para mostrar, crear, editar y eliminar registros de la tabla aseguradoras
.
Laravel facilita enormemente el proceso de interactuar con bases de datos y realizar operaciones comunes como las que vimos en este post. ¡Si tienes alguna duda o comentario, no dudes en dejarlos abajo!