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

limit_sql

La función limit_sql es una función privada que genera una cláusula SQL LIMIT en función de un valor entero proporcionado. La función asegura que el valor del límite sea válido y, si lo es, construye la cláusula LIMIT correspondiente.

Signatura


private function limit_sql(int $limit): string|array

Parámetros

  • int $limit:
    Un valor entero que representa el número máximo de registros que se deben devolver en una consulta SQL. Debe ser mayor o igual a 0.

Retorno

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

Explicación Detallada

  1. Validación del límite:

    • La función verifica si el valor de $limit es menor que 0.
    • Si $limit 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 LIMIT:

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

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

Ejemplos

$limit = 10;

$resultado = $this->limit_sql($limit);

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

Código de la Función

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