Skip to content

Relaciones de Clases

Alberto edited this page Jan 12, 2018 · 4 revisions

Muchos a muchos

Para esta relación se ha decidido crear una tabla auxiliar, la cuál posee 2 claves ajenas que apuntan a la clave primaria de las cada tabla a la qué se hace referencia.

Por tanto, la migración tendrá la siguiente estructura:

Nombre de tabla: 'tabla1_tabla2'

$table->integer('tabla1_id')->unsigned()->nullable();
$table->foreign('tabla1_id')->references('id')->on('tabla1')->onDelete('cascade');

$table->integer('tabla2_id')->unsigned()->nullable();
$table->foreign('tabla2_id')->references('id')->on('tabla2')->onDelete('cascade');

Al eliminar la fila de la tabla 1 o 2 se borrará automáticamente en cascada las relaciones que posea.

Al ser una relación muchos a muchos, hay que añadir una variable en el modelo que relacione ambas tablas, para ello, se deberá añadir en el modelo las siguientes líneas:

// Modelo tabla1
public function tabla2(){
   return $this->belongsToMany('App\Models\Tabla2', 'tabla1_tabla2');
}

Por tanto, a la hora de cargar el usuario en el controlador, al haberlo hecho global (user = tabla1):

//File: /app/Http/Controllers/Controller.php
$this->user = User::find(Auth::user()->id);

Se podrán acceder a sus corriespondientes relaciones con tabla2 (tabla2 = cursos) desde cualquier vista.

$user->cursos

Clone this wiki locally