administrador.modelado.joins.join_base.21.24.0 - gamboamartin/administrador GitHub Wiki

join_base

La función join_base construye la cláusula JOIN para una consulta SQL basada en los datos proporcionados.

Signatura

private function join_base(array $data, string $modelo_tabla, string $tabla, string $tablas): array|string

Parámetros

  • $data: (array) Un array que contiene los datos necesarios para la construcción del JOIN.
  • $modelo_tabla: (string) El nombre del modelo de tabla utilizado para validar los datos.
  • $tabla: (string) El nombre de la tabla principal en la cláusula JOIN.
  • $tablas: (string) Una cadena que representa otras tablas involucradas en el JOIN.

Retorna

  • string: La función devuelve la cláusula JOIN completa como una cadena de texto.

Explicación Detallada

La función primero valida los datos utilizando el modelo de tabla proporcionado.

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

Genera la parte LEFT JOIN de la cláusula JOIN.

Llama a la función tabla_renombrada para obtener el alias opcional de la tabla principal.

Construye la cláusula JOIN completa utilizando la función string_sql_join.

Devuelve la cláusula JOIN completa.

Ejemplos

$data = [
    'key' => 'id_usuario',
    'enlace' => 'usuarios',
    'key_enlace' => 'id'
];
$modelo_tabla = 'Usuarios';
$tabla = 'usuarios';
$tablas = '';
$sql_join = $this->join_base($data, $modelo_tabla, $tabla, $tablas);
// Resultado esperado: "LEFT JOIN usuarios AS u ON u.id_usuario = usuarios.id"

Código de la Función

private function join_base(array $data, string $modelo_tabla, string $tabla, string $tablas): array|string
    {
        $valida = (new validaciones())->valida_keys_sql(data: $data, tabla: $modelo_tabla);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al validar data',data:  $valida);
        }

        if($tabla === ''){
            return $this->error->error(mensaje:'Error $tabla no puede venir vacia', data:$tabla, es_final: true);
        }

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

        $tablas.=$left_join;

        $tabla_renombrada = $this->tabla_renombrada(data: $data,tabla:  $tabla);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar tabla_renombrada', data:$tabla_renombrada);
        }

        $str_join = $this->string_sql_join(data:  $data, modelo_tabla: $modelo_tabla, tabla: $tabla,
            tabla_renombrada:  $tabla_renombrada);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al generar sql', data:$str_join);
        }

        $tablas .= ' '.$str_join;
        return $tablas;
    }