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

init_columnas_by_table

La función init_columnas_by_table es una función privada que inicializa la estructura de columnas y tablas seleccionadas en función de un array de nombres de tablas. Esta función prepara los datos necesarios para la construcción de consultas SQL, asegurando que las tablas y sus columnas estén correctamente estructuradas.

Signatura


private function init_columnas_by_table(array $columnas_by_table): stdClass|array

Parámetros

  • array $columnas_by_table:
    Un array que contiene los nombres de las tablas que se van a utilizar en la consulta SQL. Este array debe estar estructurado adecuadamente, donde cada elemento es el nombre de una tabla.

Retorno

  • stdClass|array:
    Retorna un objeto stdClass que contiene dos propiedades:

    • columnas_sql: Un array vacío que se utilizará para agregar columnas SQL.
    • tablas_select: Un array que mapea los nombres de las tablas proporcionadas en $columnas_by_table a un valor false, indicando que las tablas han sido seleccionadas pero aún no tienen columnas asignadas.

    En caso de error, retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación del array de tablas:

    • La función verifica si el array $columnas_by_table está vacío (count($columnas_by_table) === 0). Si está vacío, se genera un error que incluye una sugerencia (fix) sobre cómo estructurar correctamente el array de tablas y se retorna un array de error.
  2. Inicialización de estructuras:

    • Se inicializa el array columnas_sql como un array vacío. Este array se utilizará más adelante para almacenar las columnas SQL correspondientes.
    • Se inicializa el array tablas_select como un array vacío. Luego, se itera sobre cada tabla en $columnas_by_table y se añade al array tablas_select con un valor false, indicando que la tabla ha sido seleccionada pero aún no se han definido columnas.
  3. Retorno de datos estructurados:

    • La función crea un objeto stdClass que contiene dos propiedades:
      • columnas_sql: El array de columnas SQL, que en este punto está vacío.
      • tablas_select: El array de tablas seleccionadas, donde cada tabla se mapea a false.
    • Retorna este objeto stdClass con la estructura inicializada.

Ejemplos

$columnas_by_table = ['usuarios', 'pedidos'];

$resultado = $this->init_columnas_by_table($columnas_by_table);

// Resultado esperado:
// Un objeto stdClass con las propiedades `columnas_sql` (array vacío) y `tablas_select`
// (array con las tablas 'usuarios' y 'pedidos' mapeadas a `false`).

Código de la Función

private function init_columnas_by_table(array $columnas_by_table): stdClass|array
    {
        if(count($columnas_by_table) === 0){
            $fix = 'columnas_by_table debe estar maquetado de la siguiente forma $columnas_by_table[] = "nombre_tabla"';
            return $this->error->error(mensaje: 'Error debe columnas_by_table esta vacia', data: $columnas_by_table,
                es_final: true, fix: $fix);
        }
        $columnas_sql = array();
        $tablas_select = array();
        foreach($columnas_by_table as $tabla){
            $tablas_select[$tabla] = false;
        }

        $data = new stdClass();
        $data->columnas_sql = $columnas_sql;
        $data->tablas_select = $tablas_select;
        return $data;
    }