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

renombres_join

La función renombres_join se encarga de generar los renombramientos de tablas y realizar los joins correspondientes en una consulta SQL.

Signatura

private function renombres_join(string $modelo_tabla, array $renombradas, string $tablas): array|string

Parámetros

$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.

$tablas (string): La cadena que representa las tablas ya unidas en la consulta SQL.

Retorna

  • string: La función devuelve un string que contiene la cadena de tablas actualizada con los renombramientos y joins.
  • array: Si ocurre un error durante la ejecución, devuelve un array con un mensaje de error.

Explicación Detallada

Itera sobre el array de tablas renombradas.

Valida que los datos de renombramiento sean un array.

Realiza el join para cada tabla renombrada y actualiza la cadena de tablas.

Retorna la cadena de tablas actualizada.

Ejemplos

$modelo_tabla = 'modelo_usuarios';
$renombradas = [
    'usuarios_renombrados' => [
        'enlace' => 'models\\usuarios',
        'nombre_original' => 'users'
    ],
    'productos_renombrados' => [
        'enlace' => 'models\\productos',
        'nombre_original' => 'items'
    ]
];
$tablas = 'usuarios AS u ON u.id = usuarios_renombrados.user_id';
$resultado = $this->renombres_join($modelo_tabla, $renombradas, $tablas);
// Resultado esperado: 'usuarios AS usuarios_renombrados  ON usuarios_renombrados.id = modelo_usuarios.users_id
// LEFT JOIN productos AS productos_renombrados  ON productos_renombrados.id = modelo_usuarios.productos_id'

Código de la Función

private function renombres_join(string $modelo_tabla, array $renombradas, string $tablas): array|string
    {
        $tablas_env = $tablas;
        foreach($renombradas as $tabla_renombrada=>$data){
            if(!is_array($data)){
                return $this->error->error(mensaje: 'Error data debe ser un array', data: $data, es_final: true);
            }
            $tablas_env = $this->join_renombres(data: $data,modelo_tabla: $modelo_tabla,
                tabla_renombrada: $tabla_renombrada, tablas:  $tablas);
            if(errores::$error){
                return $this->error->error(mensaje:'Error al generar join', data:$tablas_env);
            }
            $tablas = (string)$tablas_env;

        }
        return $tablas_env;
    }