administrador.base.orm.columnas.genera_columnas_consulta - gamboamartin/administrador GitHub Wiki
genera_columnas_consulta
La función genera_columnas_consulta
genera una cadena que representa las columnas de una consulta SQL a partir de datos proporcionados y validaciones internas. La función procesa el nombre de la tabla, obtiene columnas adicionales y principales, y combina estas columnas en una cadena final para la consulta SQL.
Signatura
private function genera_columnas_consulta(bool $columnas_en_bruto, modelo_base $modelo, string $tabla_original, string $tabla_renombrada, array $columnas = array()):array|string
Parámetros
$columnas_en_bruto (bool):
-
- Descripción: Indica si se deben usar las columnas en su forma bruta o procesada.
-
- Valores posibles: true para usar columnas en bruto, false para usar columnas procesadas.
$modelo (modelo_base):
-
- Descripción: Instancia de un modelo base que se usa para obtener información adicional sobre las columnas y la tabla.
-
- Tipo: Objeto de la clase modelo_base.
$tabla_original (string):
-
- Descripción: Nombre original de la tabla desde la cual se obtendrán las columnas.
-
- Restricciones: No debe ser un número.
$tabla_renombrada (string):
-
- Descripción: Nombre de la tabla renombrada que se usará en la consulta.
$columnas (array):
-
- Descripción: Lista de columnas a incluir en la consulta. Se usa para filtrar las columnas que se deben considerar.
Retorna
- array|string:
-
- Tipo: Cadena o array.
-
- Descripción: Retorna una cadena SQL que representa las columnas a incluir en la consulta. Si ocurre un error, retorna un array con un mensaje de error.
Explicación Detallada
-
Comportamiento Detallado
-
- Procesamiento del Nombre de la Tabla:
-
-
- La función elimina el prefijo 'models\' del nombre de la tabla original usando str_replace().
-
-
Validación del Nombre de la Tabla:
-
- Se verifica si el nombre de la tabla es un número. Si lo es, se retorna un array con un mensaje de error indicando que el nombre de la tabla no puede ser un número.
-
Obtención de Datos para Columnas:
-
- Se llama a la función data_for_columnas_envio para obtener las columnas SQL principales y adicionales en formato de cadena.
-
- Si ocurre un error durante esta llamada, se retorna un array con un mensaje de error.
-
Generación de las Columnas de Consulta:
-
- Se llama a la función columnas_envio para combinar las columnas SQL principales y adicionales.
-
- Si ocurre un error durante esta llamada, se retorna un array con un mensaje de error.
-
Retorno de la Cadena Final:
-
- Si no hay errores, se retorna la cadena generada que contiene las columnas para la consulta SQL.
-
Posibles Errores
-
- Nombre de Tabla es un Número: Si $tabla_original es numérico, la función retornará un array con un mensaje de error.
-
- Error al Obtener Datos para Columnas: Si hay un problema al obtener los datos para las columnas, se retornará un array con un mensaje de error.
-
- Error al Generar Columnas: Si hay un problema al combinar las columnas, se retornará un array con un mensaje de error.
Ejemplos
$columnas_en_bruto = true;
$modelo = new modelo_base();
$tabla_original = 'models\\mi_tabla';
$tabla_renombrada = 'mi_tabla_renombrada';
$columnas = ['columna1', 'columna2'];
$resultado = $this->genera_columnas_consulta(
columnas_en_bruto: $columnas_en_bruto,
modelo: $modelo,
tabla_original: $tabla_original,
tabla_renombrada: $tabla_renombrada,
columnas: $columnas
);
if (is_string($resultado)) {
echo "Columnas para la consulta: " . $resultado;
} else {
echo "Error: " . $resultado['mensaje'];
}
Código de la Función
private function genera_columnas_consulta(bool $columnas_en_bruto, modelo_base $modelo, string $tabla_original,
string $tabla_renombrada, array $columnas = array()):array|string
{
$tabla_original = str_replace('models\\','',$tabla_original);
if(is_numeric($tabla_original)){
return $this->error->error(mensaje: 'Error $tabla_original no puede ser un numero',data: $tabla_original,
es_final: true);
}
$data = $this->data_for_columnas_envio(columnas: $columnas, columnas_en_bruto: $columnas_en_bruto,
modelo: $modelo, tabla_original: $tabla_original, tabla_renombrada: $tabla_renombrada);
if(errores::$error){
return $this->error->error(mensaje: 'Error al datos para columnas', data: $data);
}
$columnas_envio = $this->columnas_envio(columnas_extra_sql: $data->columnas_extra_sql,
columnas_sql: $data->columnas_sql);
if(errores::$error){
return $this->error->error(mensaje: 'Error al generar columnas', data: $columnas_envio);
}
return $columnas_envio;
}