Migrations
A continuación se desglosaran ciertas partes del código que nos ayudaran a entender como funcionan ciertos apartados del sitio en el backend, desarrollado con laravel.
Tabla Roles
Se encarga de crear y eliminar la tabla roles en la base de datos.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->string('nombre', 45);
$table->string('displayname');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('roles');
}
};
Descripción de Código
Up(): Este método se ejecuta cuando se aplica la migración (php artisan migrate). Se utiliza para definir la estructura de la tabla que se va a crear. En este caso, se define la tabla roles con los siguientes campos:
Id: Una columna de tipo bigint que se auto-incrementa y sirve como clave primaria.
Nombre: Una columna de tipo string con una longitud máxima de 45 caracteres. Se usa para almacenar el nombre del rol.
Displayname: Una columna de tipo string que almacena el nombre de visualización del rol.
Timestamps: Agrega dos columnas adicionales: created_at y updated_at, que se gestionan automáticamente para registrar la fecha y hora de creación y actualización de los registros.
Down(): Este método se ejecuta cuando se revierte la migración (php artisan migrate:rollback). Se utiliza para eliminar la tabla roles si existe, limpiando así la base de datos de esta tabla.
Tabla Usuarios
Esta migración está diseñada para crear y eliminar la tabla usuarios en la base de datos.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('usuarios', function (Blueprint $table) {
$table->id();
$table->string('nombre', 45);
$table->string('apellidos', 45);
$table->string('email', 45)->unique();
$table->string('genero', 45);
$table->string('password', 255);
$table->string('foto', 255)->default('user.png');
$table->date('fecha_nac');
$table->unsignedBigInteger('id_rol');
$table->foreign('id_rol')
->references('id')
->on('roles');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('usuarios', function (Blueprint $table) {
$table->dropForeign(['id_rol']);
});
Schema::dropIfExists('usuarios');
}
};Descripción de Código
Up(): Este método se ejecuta cuando se aplica la migración (php artisan migrate). Define la estructura de la tabla usuarios con los siguientes campos:
Id: Una columna de tipo bigint que se auto-incrementa y actúa como la clave primaria de la tabla.
Nombre: Una columna de tipo string con una longitud máxima de 45 caracteres para almacenar el nombre del usuario.
Apellidos: Una columna de tipo string con una longitud máxima de 45 caracteres para almacenar los apellidos del usuario.
Email: Una columna de tipo string con una longitud máxima de 45 caracteres. Se establece como única (unique()) para evitar correos electrónicos duplicados.
Genero: Una columna de tipo string con una longitud máxima de 45 caracteres para almacenar el género del usuario.
Password: Una columna de tipo string con una longitud máxima de 255 caracteres para almacenar la contraseña del usuario.
Foto: Una columna de tipo string con una longitud máxima de 255 caracteres que se establece con un valor predeterminado de 'user.png'. Se usa para almacenar la foto de perfil del usuario.
Fecha_nac: Una columna de tipo date para almacenar la fecha de nacimiento del usuario.
Id_rol: Una columna de tipo unsignedBigInteger que actúa como una clave foránea referenciando el campo id en la tabla roles. Establece una relación de uno a muchos entre roles y usuarios.
Timestamps: Agrega dos columnas adicionales, created_at y updated_at, para registrar automáticamente la fecha y hora de creación y actualización de los registros.
Down(): Este método se ejecuta cuando se revierte la migración (php artisan migrate:rollback). Se encarga de eliminar la tabla usuarios y de eliminar la restricción de clave foránea asociada: Schema::table('usuarios', function (Blueprint $table): Primero elimina la clave foránea id_rol con dropForeign(['id_rol']). Schema::dropIfExists('usuarios'): Luego, elimina la tabla usuarios si existe.
Tabla Crear Contraseña
Esta migración está diseñada para crear y eliminar la tabla password_recovery en la base de datos.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_recovery', function (Blueprint $table) {
$table->id();
$table->text('token');
$table->dateTime('expires_at');
$table->unsignedBigInteger('id_usuario');
$table->foreign('id_usuario')
->references('id')
->on('usuarios')
->onDelete('cascade');;
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('password_recovery', function (Blueprint $table) {
$table->dropForeign(['id_usuario']);
});
Schema::dropIfExists('password_recovery');
}
};
Descripción de Código
Up(): Este método se ejecuta cuando se aplica la migración (php artisan migrate). Define la estructura de la tabla password_recovery con los siguientes campos:
id: Una columna de tipo bigint que se auto-incrementa y actúa como la clave primaria de la tabla.
token: Una columna de tipo text para almacenar el token de recuperación de contraseña.
expires_at: Una columna de tipo dateTime para almacenar la fecha y hora en que el token de recuperación de contraseña expirará.
id_usuario: Una columna de tipo unsignedBigInteger que actúa como una clave foránea referenciando el campo id en la tabla usuarios. Establece una relación de uno a muchos entre usuarios y password_recovery.
foreign('id_usuario'): Define la relación de clave foránea que referencia el campo
iden la tabla usuarios. La opción onDelete('cascade') especifica que si un usuario es eliminado, todos los registros relacionados en password_recovery también se eliminarán.timestamps: Agrega dos columnas adicionales, created_at y updated_at, para registrar automáticamente la fecha y hora de creación y actualización de los registros.
Down(): Este método se ejecuta cuando se revierte la migración (php artisan migrate:rollback). Se encarga de eliminar la tabla password_recovery y de eliminar la restricción de clave foránea asociada:
Schema::table('password_recovery', function (Blueprint $table): Primero elimina la clave foránea id_usuario con dropForeign(['id_usuario']).
Schema::dropIfExists('password_recovery'): Luego, elimina la tabla password_recovery si existe.
Last updated