Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

232
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!