administrador.base.orm.columnas.genera_columnas_tabla - gamboamartin/administrador GitHub Wiki

genera_columnas_tabla

La función genera_columnas_tabla genera una cadena SQL para seleccionar columnas de una tabla, validando la tabla original y utilizando un modelo para obtener las columnas y el nombre de la tabla. También maneja el uso de columnas en bruto o con alias según sea necesario. El retorno es la cadena SQL generada o un array en caso de error.

Signatura

private function genera_columnas_tabla(bool $columnas_en_bruto,modelo_base $modelo, string $tabla_original, string $tabla_renombrada, array $columnas = array()):array|string

Parámetros

  • $columnas_en_bruto (bool): Indicador de si las columnas deben ser usadas en bruto o con alias.
    • Descripción: Si es true, las columnas se usarán sin alias; de lo contrario, se les asignará un alias.
  • $modelo (modelo_base): Instancia del modelo base que se usará para obtener la información de la tabla y columnas.
    • Descripción: Este objeto proporciona métodos para obtener las columnas y el nombre de la tabla.
  • $tabla_original (string): Nombre original de la tabla, que puede estar en el formato de namespace.
    • Descripción: Este nombre se utilizará para obtener las columnas y el nombre de la tabla.
  • $tabla_renombrada (string): Nombre alternativo de la tabla (si es necesario renombrarla).
    • Descripción: Se usará para generar el nombre de la tabla en la consulta SQL.
  • $columnas (array): Arreglo de alias de columnas que deben ser incluidas en la consulta SQL.
    • Descripción: Si el arreglo no está vacío, solo se procesarán las columnas cuyos alias están en este arreglo.

Retorna

  • string: La cadena SQL generada con las columnas y sus alias.

    • Descripción: La cadena contiene todas las columnas procesadas y es el resultado final de la función.
  • array: Si ocurre un error (por ejemplo, si $tabla_original está vacío o si hay un problema al obtener las columnas SQL), se retorna un array con un mensaje de error.

    • Descripción: Este array describe el error ocurrido durante el proceso.

Explicación Detallada

  • Validación del Nombre de la Tabla:

    • La función reemplaza el prefijo models\ en $tabla_original y valida que no esté vacío. Si lo está, se retorna un array con un mensaje de error.
    • También se verifica que $tabla_original no sea un número. Si lo es, se retorna un array con un mensaje de error.
  • Obtención de Columnas:

    • Se llama a la función obten_columnas del modelo para obtener las columnas de la tabla original. Si ocurre un error, se retorna un array con un mensaje de error.
  • Obtención del Nombre de la Tabla:

    • Se obtiene el nombre de la tabla (original o renombrada) mediante el método obten_nombre_tabla del modelo. Si hay un error, se retorna un array con un mensaje de error.
  • Generación de la Cadena SQL:

    • Se llama a la función columnas_sql_init para construir la cadena SQL con las columnas y alias. Si ocurre un error, se retorna un array con un mensaje de error.
  • Retorno de la Cadena SQL:

    • Si todas las operaciones se realizan sin errores, se retorna la cadena SQL generada.
  • Posibles Errores

    • Nombre de Tabla Vacío: Si $tabla_original está vacío después de eliminar el prefijo models\, la función retorna un array con un mensaje de error.
    • Nombre de Tabla como Número: Si $tabla_original es un número, se retorna un array con un mensaje de error.
    • Error al Obtener Columnas: Si hay un problema al obtener las columnas, se retorna un array con un mensaje de error.
    • Error al Obtener Nombre de la Tabla: Si hay un problema al obtener el nombre de la tabla, se retorna un array con un mensaje de error.
    • Error al Generar Columnas SQL: Si ocurre un problema al generar la cadena SQL, se retorna un array con un mensaje de error.

Ejemplos

$columnas_en_bruto = false;
$modelo = new ModeloBase();
$tabla_original = 'models\\MiModelo';
$tabla_renombrada = 'mi_modelo';
$columnas = ['mi_tabla_nombre_columna1', 'mi_tabla_nombre_columna2'];

$resultado = $this->genera_columnas_tabla($columnas, $modelo, $tabla_original, $tabla_renombrada);

if (is_string($resultado)) {
    echo "Consulta SQL: " . $resultado;
} else {
    echo "Error: " . $resultado['mensaje'];
}

Código de la Función

private function genera_columnas_tabla(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($tabla_original === ''){
            return  $this->error->error(mensaje: 'Error tabla original no puede venir vacia', data: $tabla_original,
                es_final: true);
        }

        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->obten_columnas( modelo: $modelo, tabla_original: $tabla_original);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al obtener columnas',data:  $data);
        }
        $columnas_parseadas = $data->columnas_parseadas;
        $tabla_nombre = $modelo->obten_nombre_tabla(tabla_original: $tabla_original,
            tabla_renombrada: $tabla_renombrada);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al obtener nombre de tabla', data: $tabla_nombre);
        }

        $columnas_sql = $this->columnas_sql_init(columnas: $columnas, columnas_en_bruto:$columnas_en_bruto,
            columnas_parseadas: $columnas_parseadas, tabla_nombre: $tabla_nombre);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al obtener columnas sql',data:  $columnas_sql);
        }
        return $columnas_sql;
    }