administrador.modelado.params_sql.offset_sql - gamboamartin/administrador GitHub Wiki

offset_sql

La función offset_sql es una función privada que genera una cláusula SQL OFFSET en función de un valor entero proporcionado. La función valida que el valor del desplazamiento sea válido y, si lo es, construye la cláusula OFFSET correspondiente.

Signatura


private function offset_sql(int $offset): string|array

Parámetros

  • int $offset:
    Un valor entero que representa el número de registros que se deben omitir desde el inicio de una consulta SQL. Debe ser mayor o igual a 0.

Retorno

  • string|array:
    Retorna una cadena que representa la cláusula SQL OFFSET si el valor de $offset es mayor que 0. Si $offset es 0, retorna una cadena vacía. En caso de error (si $offset es menor que 0), retorna un array de error generado por $this->error->error().

Explicación Detallada

  1. Validación del desplazamiento (offset):

    • La función verifica si el valor de $offset es menor que 0.
    • Si $offset es menor que 0, se genera un mensaje de error y se retorna un array con el mensaje de error.
  2. Generación de la cláusula OFFSET:

    • Si $offset es mayor que 0, la función construye la cláusula SQL OFFSET concatenando el valor de $offset.
    • Si $offset es igual a 0, la función retorna una cadena vacía, lo que indica que no se aplicará ningún desplazamiento en la consulta SQL.
  3. Retorno de la cláusula OFFSET:

    • La función retorna la cadena que representa la cláusula OFFSET generada o una cadena vacía si no se aplica ningún desplazamiento.

Ejemplos

$offset = 10;

$resultado = $this->offset_sql($offset);

// Resultado esperado:
// ' OFFSET 10' si $offset es mayor que 0.
// Una cadena vacía si $offset es igual a 0.
// Un array de error si $offset es menor que 0.

Código de la Función

private function offset_sql(int $offset): string|array
    {
        if($offset<0){
            return $this->error->error(mensaje: 'Error $offset debe ser mayor o igual a 0',data: $offset,
                es_final: true);

        }
        $offset_sql = '';
        if($offset >0){
            $offset_sql.=' OFFSET '.$offset;
        }
        return $offset_sql;
    }