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

string_sql_join

La función string_sql_join genera una cadena SQL para una cláusula JOIN basada en los datos proporcionados.

Signatura

private function string_sql_join( array $data, string $modelo_tabla, string $tabla, string $tabla_renombrada): string|array

Parámetros

  • $data: (array) Un array que contiene los datos necesarios para la construcción de la cláusula 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.
  • $tabla_renombrada: (string) El alias opcional para la tabla principal.

Retorna

  • string: La función devuelve la cadena SQL de la cláusula JOIN.

Explicación Detallada

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

Verifica que los nombres de las tablas y sus alias no estén vacíos y que no sean numéricos.

Construye la cadena SQL de la cláusula JOIN utilizando los datos proporcionados.

Ejemplos

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

Código de la Función

private function string_sql_join( array $data, string $modelo_tabla, string $tabla,
                                      string $tabla_renombrada): string|array
    {
        $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);
        }
        $tabla = trim($tabla);
        $tabla_renombrada = trim($tabla_renombrada);

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

        if(is_numeric($tabla)){
            return $this->error->error(mensaje:'Error $tabla debe ser un texto', data:$tabla, es_final: true);
        }
        if(is_numeric($tabla_renombrada)){
            return $this->error->error(mensaje:'Error $tabla debe ser un texto', data:$tabla, es_final: true);
        }

        return "$tabla AS $tabla_renombrada  ON $tabla_renombrada.$data[key] = $data[enlace].$data[key_enlace]";
    }