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.
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