Laravel Consultor Constructor maneja eficientemente subconsules
]] Cuando se usa el ORM eloquent para recuperar datos de las subconsules, los desarrolladores a menudo usan tosql ()
y consultas nativas en combinación. Aunque este método es efectivo, no es lo suficientemente intuitivo. Aquí hay una solución más eficiente:
Por ejemplo, para extraer el recuento de resultados de la siguiente subconsulta:
SELECT COUNT(*)
FROM (
SELECT *
FROM abc
GROUP BY col1
) AS a;
Laravel nos permite fusionar consultas nativas en consultas elocuentes usando Mergebindings
. Primero, creamos una instancia de constructor elocuente para la subconsulta:
$sub = Abc::where(..)->groupBy(..);
Entonces, usamos db :: table
para crear una nueva tabla que haga referencia a la subconsulta y establezca manualmente el enlace correspondiente:
$count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
->mergeBindings($sub->getQuery()) // 获取底层查询构造器
->count();
Este enfoque asegura que el enlace correcto se aplique a la consulta fusionada, lo que resulta en el resultado que queremos sin realizar operaciones de cadena manualmente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3