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

236
Vistas
Laravel Equivalente elocuente de una consulta de QueryBuilder

Tengo un proyecto Laravel 7 y esta estructura de base de datos:

 races participants bibs coords ------- -------------- ------ -------- id id id id race_id bib_id bib_id [...]

Las relaciones son:

 1 race => N participants ( races.id = participants.race_id ) 1 participant => 1 bib ( participants.bib_id = bibs.id ) 1 bib => N coords ( bibs.id = coords.bib_id )

Entonces también significa que: participants.bib_id = coords.bib_id

Quiero obtener todas las coordenadas relacionadas con una carrera específica. La forma en que lo hice fue usando el generador de consultas de esta manera:

 class Race extends Model { public function getCoords() { return Coord::join('participants', 'participants.bib_id', '=', 'coords.bib_id') ->where('participants.race_id', $this->id)->select('coords.*')->get(); } }

Aquí puedo hacer eso:

 $coords = Race::find(1)->getCoords();

Funciona como se esperaba, pero estoy buscando una manera de hacerlo usando Eloquent para que sea más fácil de encadenar con más relaciones y esas cosas.
belongsToMany muchas cosas con pertenecen a muchos y hasManyThrough a través, pero nada funcionó. Me pregunto si eso es posible.

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

0

// Race public function participants() { return $this->hasMany(Participant::class); } // Participant public function bib() { return $this->belongsTo(Bib::class); } public function race() { return $this->belongsTo(Race::class); } // Bib public function coords() { return $this->hasMany(Coord::class); } // Coord public function bib() { return $this->belongsTo(Bib::class); }


Ahora, lo que quieres es encontrar coordenadas para una carrera determinada.

$race = Race::find($id)->with('participants.bib.coords');


Ahora, para extraer coordenadas de él.

 $coords = $race->participants->map(function($participant){ return $participant->bib->coords; });


Mantenme informado en los comentarios a continuación. ¡Salud!

over 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