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

259
Visualizações
Consulta sin procesar de Laravel e incluye relaciones de modelo.

Estoy tratando de devolver una sola publicación con una subconsulta para incluir un recuento de votos negativos y positivos. Puedo lograr esto usando una consulta sin formato.

Sin embargo, hacerlo significa que ya no puedo acceder a las relaciones de modelos de publicación, por ejemplo, comentarios.

¿Hay una manera más Elocuente en la que pueda hacer esto para mantener las relaciones de los modelos?

¿O hay una mejor manera en que podría estar haciendo todo el asunto? Me encantaría saber cómo lo harías.

 $post = DB::select( "SELECT post.*, (SELECT COUNT(*) FROM posts_votes WHERE type = 1 AND post_id = posts.id) AS up_votes, (SELECT COUNT(*) FROM posts_votes WHERE type = 2 AND post_id = posts.id) AS down_votes FROM posts INNER JOIN posts_votes ON posts.id = posts_votes.post_id WHERE posts.id = ?", [$id])[0];
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Esta es una pregunta antigua, pero es el primer resultado que obtengo cuando busco en Google "consulta sin procesar de relación de laravel", por lo que podría ser útil para otras personas que buscan lo mismo.

Logré resolverlo así:

 $query = ""; //raw query goes here $result = Model::fromQuery($query); $result->load('relationship');

Asegúrese de que su consulta sin procesar personalizada contenga las columnas adecuadas especificadas en el modelo; de lo contrario, la relación siempre devolverá un valor nulo.

Probado en Laravel 6.17.0

about 4 years ago · Santiago Trujillo Relatório

0

Prueba esto

 Post::select('*') ->addSelect(DB::raw(' (select count(*) from posts_votes where type = 1 and post_id = posts.id) as up_votes ')) ->addSelect(DB::raw(' (select count(*) from posts_votes where type = 2 and post_id = posts.id) as down_votes ')) ->whereIn('id', $ids) ->get();
about 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