-
Notifications
You must be signed in to change notification settings - Fork 0
Relaciones de Clases
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
Para realizar esta relación, al igual que en la relación muchos a muchos, se debe implentar en la migración:
Nombre de tabla: 'tabla1'
$table->integer('tabla2_id')->unsigned();
$table->foreign('tabla2_id')->references('id')->on('tabla2')->onDelete('cascade');
Además, se añade la clave ajena que apunte a la otra tabla indicando que se borre si es borrado la fila de tabla2.
Además en los modelos se debe añadir:
Modelo1:
public function datoTabla2(){
return $this->belongsTo('App\Models\ModeloTabla2');
}
Modelo2:
public function datosTabla1(){
return $this->hasMany('App\Models\ModeloTabla1');
}
Proyecto
- Inicio
- Descripción
- Descripción tecnológica
- Problemas encontrados
- Puesta en marcha
- Ejemplos de ejecución
- Posibles mejoras
Iteración 1
Iteración 2
Iteración 3