Relación Muchos a Muchos Polimórficas
Comprar curso

101. Relación Muchos a Muchos Polimórficas

En este capítulo, descubre cómo establecer relaciones Muchos a Muchos Polimórficas en Laravel 10 entre dos o más modelos de la base de datos. Aprende cómo definir la relación y cómo acceder a los datos relacionados.


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    Si estás trabajando en un proyecto de Laravel 10 y necesitas establecer relaciones Muchos a Muchos Polimórficas entre dos o más modelos de la base de datos, estás en el lugar correcto. En este capítulo, te enseñaremos cómo definir y acceder a esta relación en Laravel 10.

    Las relaciones Muchos a Muchos Polimórficas se utilizan cuando varios modelos necesitan estar relacionados con otro modelo de forma individual, y cada uno de ellos puede tener varios registros relacionados en la tabla de relación. En Laravel 10, puedes definir esta relación mediante el uso de métodos en los modelos correspondientes.

    Para establecer una relación Muchos a Muchos Polimórfica en Laravel 10, debes crear una tabla de relación polimórfica que contenga las claves foráneas de ambos modelos, y establecer los métodos morphToMany y morphedByMany en los modelos correspondientes. Por ejemplo, si tienes un modelo Tag, un modelo Post y un modelo Video, y cada uno puede tener varias etiquetas y varias etiquetas pueden estar relacionadas con varios modelos, debes establecer los métodos de la siguiente manera:

    class Tag extends Model
    {
       public function posts()
       {
           return $this->morphedByMany(Post::class, 'taggable');
       }
       public function videos()
       {
           return $this->morphedByMany(Video::class, 'taggable');
       }
    }
    class Post extends Model
    {
       public function tags()
       {
           return $this->morphToMany(Tag::class, 'taggable');
       }
    }
    class Video extends Model
    {
       public function tags()
       {
           return $this->morphToMany(Tag::class, 'taggable');
       }
    }

    En este ejemplo, el método morphToMany en los modelos Post y Video establece la relación Muchos a Muchos Polimórfica entre el modelo Tag y el modelo correspondiente. Además, se especifica el nombre de la columna que contiene el tipo de modelo y la clave foránea del modelo en la tabla de relación polimórfica. Por otro lado, el método morphedByMany en el modelo Tag establece la relación Muchos a Muchos Polimórfica inversa entre el modelo Tag y el modelo correspondiente.

    Una vez definida la relación, puedes acceder a los datos relacionados mediante el uso de métodos en una instancia del modelo principal. Por ejemplo, si deseas obtener todas las etiquetas de un video con un ID específico, puedes hacerlo de la siguiente manera:

    $video = Video::find(1);
    $tags = $video->tags;

    En resumen, si necesitas establecer relaciones Muchos a Muchos Polimórficas en Laravel 10, debes crear una tabla de relación polimórfica y establecer los métodos morphToMany y morphedByMany en los modelos correspondientes. Una vez definida la relación, puedes acceder a los datos relacionados mediante el uso de métodos en una instancia del modelo principal. Esperamos que esta información te haya sido útil en tu proyecto de Laravel 10.

  • Christian Hernán Abanto Segura

    Christian Hernán Abanto Segura hace 1 año

    Buenas noches, como eloquent sabe que es a la tabla taggables a la que debe consultar?, si bien es cierto en el morphToMany se menciona los campos taggables no se menciona la tabla, o es que eloquent elimiona la s final para saber a que tabla consultar?.

    • Victor Arana Flores hace 1 año

      Hola Cristian. CUando se crea la relación tu especificas el nonbre de esa tabla.

      Por eso Eloquent sabe a que tabla hacer la consulta.