administrador.base.orm.modelo_base.extra_columns - gamboamartin/administrador GitHub Wiki
extra_columns
La función extra_columns
es una función privada que genera columnas adicionales para una consulta SQL. Dependiendo del valor de $con_sq
, la función puede generar subconsultas y columnas adicionales, las cuales se agregan a la consulta principal. Los resultados se devuelven como un objeto que contiene estas columnas adicionales.
Signatura
private function extra_columns(array $columnas, array $columnas_seleccionables, string $columnas_sql, bool $con_sq): stdClass|array
Parámetros
-
array $columnas
:
Un array que contiene los nombres de las columnas o subconsultas que se desean incluir en la salida. -
array $columnas_seleccionables
:
Un array que contiene una lista de alias de subconsultas que son seleccionables. Solo las subconsultas con alias presentes en este array serán incluidas en el resultado final. -
string $columnas_sql
:
Una cadena que contiene las columnas SQL principales que se van a utilizar en la consulta. -
bool $con_sq
:
Un valor booleano que indica si se deben generar subconsultas (sub_querys
) y columnas adicionales. Si estrue
, se generarán; si esfalse
, no se generarán.
Retorno
-
stdClass|array
:
Retorna un objetostdClass
que contiene dos propiedades:sub_querys_sql
: Una cadena con las subconsultas SQL generadas, o una cadena vacía si no se generaron subconsultas.columnas_extra_sql
: Una cadena con las columnas adicionales generadas, o una cadena vacía si no se generaron columnas adicionales.
En caso de error, retorna un array de error generado por
$this->error->error()
.
Explicación Detallada
-
Inicialización de variables:
- Se inicializan las variables
$sub_querys_sql
y$columnas_extra_sql
como cadenas vacías para almacenar los resultados de las subconsultas y las columnas adicionales, respectivamente.
- Se inicializan las variables
-
Generación de subconsultas y columnas adicionales:
- Si
$con_sq
estrue
, la función realiza los siguientes pasos:- Llama a la función
sub_querys()
para generar las subconsultas SQL. Si ocurre un error, se genera un mensaje de error y se retorna un array con el mensaje de error. - Llama a la función
genera_columnas_extra()
para generar las columnas adicionales. Si ocurre un error, se genera un mensaje de error y se retorna un array con el mensaje de error.
- Llama a la función
- Si
-
Retorno de los resultados:
- Se crea un objeto
stdClass
que contiene dos propiedades:sub_querys_sql
: Contiene la cadena de subconsultas SQL generadas.columnas_extra_sql
: Contiene la cadena de columnas adicionales generadas.
- El objeto
stdClass
es devuelto como resultado de la función.
- Se crea un objeto
Ejemplos
$columnas = ['total_pedidos', 'ultima_compra'];
$columnas_seleccionables = ['total_pedidos'];
$columnas_sql = 'id, nombre, email';
$con_sq = true;
$resultado = $this->extra_columns($columnas, $columnas_seleccionables, $columnas_sql, $con_sq);
// Resultado esperado:
// Un objeto stdClass con `sub_querys_sql` y `columnas_extra_sql` generados.
Código de la Función
private function extra_columns(
array $columnas, array $columnas_seleccionables, string $columnas_sql, bool $con_sq): stdClass|array
{
$sub_querys_sql = '';
$columnas_extra_sql = '';
if($con_sq) {
$sub_querys_sql = (new columnas())->sub_querys(columnas: $columnas_sql, modelo: $this,
columnas_seleccionables: $columnas_seleccionables);
if (errores::$error) {
return $this->error->error(mensaje: 'Error al generar sub querys en ' . $this->tabla,
data: $sub_querys_sql);
}
$columnas_extra_sql = (new columnas())->genera_columnas_extra(columnas: $columnas, modelo: $this);
if (errores::$error) {
return $this->error->error(mensaje: 'Error al generar columnas', data: $columnas_extra_sql);
}
}
$data = new stdClass();
$data->sub_querys_sql = $sub_querys_sql;
$data->columnas_extra_sql = $columnas_extra_sql;
return $data;
}