administrador.modelado.joins.tablas.21.25.0 - gamboamartin/administrador GitHub Wiki

tablas

La función tablas se encarga de generar las tablas completas para una consulta SQL, incluyendo las extensiones de estructura y los renombramientos necesarios.

Signatura

final public function tablas(array $columnas, array $extension_estructura, array $extra_join, string $modelo_tabla, array $renombradas, string $tabla): array|string

Parámetros

$columnas (array): Un array que contiene las columnas de la tabla.

$extension_estructura (array): Un array que contiene las extensiones de estructura para realizar joins adicionales.

$extra_join (array): Un array que contiene joins adicionales especificados por el usuario.

$modelo_tabla (string): El nombre del modelo de la tabla.

$renombradas (array): Un array que contiene los nombres de las tablas renombradas y sus respectivos datos para el join.

$tabla (string): El nombre de la tabla principal.

Retorna

  • string: La función devuelve un string que contiene la cadena de tablas completas generada para la consulta SQL.
  • array: Si ocurre un error durante la ejecución, devuelve un array con un mensaje de error.

Explicación Detallada

Verifica que el nombre de la tabla no esté vacío.

Obtiene las tablas completas con las columnas especificadas.

Aplica las extensiones de estructura a las tablas obtenidas.

Aplica joins adicionales especificados por el usuario.

Aplica renombramientos a las tablas.

Retorna las tablas completas generadas.

Ejemplos

$columnas = ['id', 'nombre', 'apellido'];
$extension_estructura = [
    'extension_1' => [
        'enlace' => 'models\\extension1',
        'nombre_original' => 'extension1_table'
    ],
    'extension_2' => [
        'enlace' => 'models\\extension2',
        'nombre_original' => 'extension2_table'
    ]
];
$extra_join = [
    'join_extra' => [
        'enlace' => 'models\\extra_table',
        'nombre_original' => 'extra_table'
    ]
];
$modelo_tabla = 'modelo_usuarios';
$renombradas = [
    'usuarios_renombrados' => [
        'enlace' => 'models\\usuarios',
        'nombre_original' => 'users'
    ]
];
$tabla = 'usuarios';
$resultado = $this->tablas($columnas, $extension_estructura, $extra_join, $modelo_tabla, $renombradas, $tabla);
// Resultado esperado: 'usuarios AS usuarios  LEFT JOIN extension1_table AS extension1_table  ON extension1_table.id = usuarios.extension1_id 
// LEFT JOIN extension2_table AS extension2_table  ON extension2_table.id = usuarios.extension2_id 
// LEFT JOIN extra_table AS extra_table  ON extra_table.id = usuarios.extra_table_id 
// LEFT JOIN usuarios_renombrados AS usuarios_renombrados  ON usuarios_renombrados.id = modelo_usuarios.users_id'

Código de la Función

final public function tablas(array $columnas, array $extension_estructura, array $extra_join, string $modelo_tabla,
                                 array $renombradas, string $tabla): array|string
    {
        $tabla = trim($tabla);
        if($tabla === ''){
            return $this->error->error(mensaje: 'La tabla no puede ir vacia',data:  $tabla, es_final: true);
        }
        $tablas = $this->obten_tablas_completas(columnas_join:  $columnas, tabla: $tabla);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al obtener tablas',data:  $tablas);
        }

        $tablas = $this->extensiones_join(extension_estructura: $extension_estructura, modelo_tabla: $modelo_tabla,
            tablas:  $tablas);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar join',data:  $tablas);
        }

        $tablas = $this->extensiones_join(extension_estructura: $extra_join, modelo_tabla: $modelo_tabla,
            tablas:  $tablas);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar join',data:  $tablas);
        }

        $tablas = $this->renombres_join(modelo_tabla:$modelo_tabla,renombradas: $renombradas, tablas: $tablas);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar join', data: $tablas);
        }
        return $tablas;
    }