Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

393
Vistas
Aplanar las relaciones de Laravel Eloquent Collection

Estoy usando la siguiente estructura de base de datos:

película
- identificación
- título

director
- identificación
- nombre

director de cine
- id_director - id_película

Los modelos se configuran así:

Película.php

 namespace App; use Illuminate\Database\Eloquent\Model; class Movie extends Model { public $table = "movie"; /** * The roles that belong to the user. */ public function directors() { return $this->belongsToMany('App\Director', 'movie_director'); } }

Director.php

 namespace App; use Illuminate\Database\Eloquent\Model; class Director extends Model { public $table = "director"; /** * The roles that belong to the user. */ public function movies() { return $this->belongsToMany('App\Movie', 'movie_director'); } }

Así que hay una relación de muchos a muchos entre una película y un director.

En la página de detalles de una película me gustaría publicar otras películas de los directores de la película original.

 $movie = Movie::with('directors.movies')->find(1);

Eso me da todos los datos que necesito, pero para obtener una lista completa de películas, tendría que recorrer la colección de directores y luego recorrer la colección de películas dentro de ese director. ¿No hay una manera más rápida/más fácil de hacer esto?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que una forma de hacer esto sería agregar un método a su modelo de Movie usando hasManyThrough para obtener las otras películas relacionadas por director.

 public function relatedMovies() { return $this->hasManyThrough('App\Movie', 'App\Director'); }

Luego, cargue esa relación por separado, en lugar de cargar ansioso la relación anidada.

 $movie = Movie::with('directors', 'relatedMovies')->find(1);
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda