Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

233
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda