39. Relación uno a muchos

En una relación uno a muchos en una base de datos, una fila en una tabla se relaciona con muchas filas en otra tabla. Esta relación se establece mediante la creación de una clave foránea en la tabla que representa el lado "muchos" de la relación, que apunta a la clave primaria de la tabla que representa el lado "uno".

Un ejemplo común de una relación uno a muchos es una tabla de pedidos y una tabla de productos, donde cada pedido puede contener muchos productos y cada producto pertenece a un solo pedido. En este caso, la clave primaria de la tabla de pedidos se convierte en la clave foránea en la tabla de productos, estableciendo así la relación uno a muchos. La relación uno a muchos es una de las relaciones más comunes en las bases de datos y se utiliza ampliamente para modelar muchos tipos de datos.


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Walter

    Walter hace 1 año

    ? Relaciones uno a muchos

             Encontramos relaciones de este tipo por ejemplo entre las tablas users y posts.

             En este caso posts es una entidad débil que depende de otras dos entidades: users y categorias.

             Debemos crear primero las tablas de entidades fuertes de las cuales depende. Como users ya está creada vamos a crear la tabla categorias y su migración de una vez:

     

        php artisan make:model Categoria -m

     

             Completamos los campos en el método up del archivo de migración:

     

        $table->string('name', 45);

     

             Ahora podemos crear el modelo y la migración para la tabla posts:

     

        php artisan make:model Post -m

     

             Completamos los campos en el método up del archivo de migración y agregamos las restricciones de llave foránea:

     

        $table->string('name'); //lo dejamos en 255 caracteres
        $table->text('body');
        $table->unsignedBigInteger('user_id')->nullable();
        $table->unsignedBigInteger('categoria_id')->nullable();
        
        $table->foreign('user_id')
        	->references('id')->on('users')
        	->onDelete('set null')
    
        $table->foreign('categoria_id')
        	->references('id')->on('categorias')
        	->onDelete('set null')

     

             Agregamos la relación uno a muchos al modelo User:

     

        public function posts() { //en plural porque puede escribir muchos posts
        	return $this->hasMany('App\Models\Post');
        }

     

             Ahora agregamos la relación uno a muchos inversa al modelo Post:

     

        public function user() { //un único usuario ha escrito el post
        	return $this->belongsTo('App\Models\User');
        }

     

             Ahora agregamos la relación uno a muchos al modelo Categoria:

     

        public function posts() {
        	return $this->hasMany('App\Models\Post');
        }

     

             Por último agregamos la relación uno a muchos inversa al modelo Post:

     

        public function categoria() {
        	return $this->belongsTo('App\Models\Categoria');
        }

     

             Ejecutamos las migraciones correspondientes:

     

        php artisan migrate

     

  • Leidy Laura Patzi Tancara

    Leidy Laura Patzi Tancara hace 2 años

    una pregunta, al crear una variable de tipo fecha, como seria el tipo de dato?

     

    • Victor Arana Flores hace 2 años

      Tipo Date. Te sugiero que veas mi cuerso de PHP y MySQL antes del de Laravel

    • Jairo Andrés Grajales Salinas hace 1 año

      date o datetime