"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso selecionar com eficiência das subconsminadas usando o Builder de consulta do Laravel?

Como posso selecionar com eficiência das subconsminadas usando o Builder de consulta do Laravel?

Postado em 2025-03-23
Navegar:514

How Can I Efficiently Select from Subqueries Using Laravel's Query Builder?

o construtor de consultas do Laravel lida com eficiência as subconsências

]

Ao usar o eloqüente ORM para recuperar dados de subconsências, os desenvolvedores costumam usar tosql () e consultas nativas em combinação. Embora esse método seja eficaz, não é intuitivo o suficiente. Aqui está uma solução mais eficiente:

por exemplo, para extrair a contagem de resultados da seguinte subconsência:

SELECT COUNT(*) 
FROM (
  SELECT * 
  FROM abc 
  GROUP BY col1
) AS a;

Laravel nos permite mesclar consultas nativas em consultas eloquentes usando MergeBindings . Primeiro, criamos uma instância de construtor eloquente para a subconsulta:

$sub = Abc::where(..)->groupBy(..);

então, usamos db :: tabela para criar uma nova tabela que referencia a subconsulta e defina manualmente a ligação correspondente:

$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
    ->mergeBindings($sub->getQuery()) // 获取底层查询构造器
    ->count();

Essa abordagem garante que a ligação correta seja aplicada à consulta mesclada, resultando no resultado que queremos sem executar manualmente as operações de string.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3