Gestionando las relaciones de tablas con el framework Laravel

Ejemplo práctico para comprender las relaciones entre tablas en usando el framework Laravel.

Canales Zapata, Mauro
103 lecturas
Canales Zapata, Mauro

En este ejemplo veremos lo sencillo que es relacionar tablas en Laravel.

Para esto, vamos a crear 2 tablas:

  • usuarios
  • roles

La relación que vamos a realizar será entre el usuario y el rol asociado.

Creando la tabla de roles

Ejecutamos desde la consola que deberá estar posicionada en la carpeta de nuestro proyecto.

php artisan make:migration create_roles_table

Luego vamos a definir los campos para nuestra migración en la nueva clase creada.

public function up()
{
    Schema::create('roles', function (Blueprint $table) {
        $table->increments('id');
        $table->string("nombre",20);
        $table->string("descripcion",100);
        $table->timestamps();
    });
}

Y para ejecutar la migración debemos ejecutar el comando:

php artisan migrate

Creando la tabla de usuarios

Los pasos son muy similares al que vimos para crear la tabla de roles.

php artisan make:migration create_usuarios_table

Nos toca agregar los campos y la relación entre ambas tablas con la diferencia que usaremos el método foreign para generar la relación.

public function up()
{
    Schema::create('usuarios', function (Blueprint $table) {
        $table->increments('id');
        $table->string('nombre_usuario',20);
        $table->string('contrasena');
        $table->integer("rol_id")->unsigned();

        $table->foreign("rol_id")->references("id")->on("roles")
            ->onDelete("cascade")
            ->onUpdate("cascade");
        $table->timestamps();
    });
}

Nota: los métodos onDelete y onUpdate lo usamos para que se puedan eliminar o actualizar los registros mediante cascada. Por ejemplo, si tenemos un registro y lo queremos eliminar no vamos a poder hasta eliminar su relación previamente, con este paso hacemos que borre la relación automáticamente. Bueno, esto es más un tema de SQL.

Finalmente ejecutamos la migración

php artisan migrate

Conclusión

Consideren que para que la relación sea válida los campos deben contener las mismas características y tipos. Es como si lo hicieramos desde la base de datos, para que la relación sea válida deberán ser del mismo tipo.

¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín