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 SQLOFFSETsi el valor de$offsetes mayor que 0. Si$offsetes 0, retorna una cadena vacía. En caso de error (si$offsetes menor que 0), retorna un array de error generado por$this->error->error().
Explicación Detallada
-
Validación del desplazamiento (
offset):- La función verifica si el valor de
$offsetes menor que 0. - Si
$offsetes menor que 0, se genera un mensaje de error y se retorna un array con el mensaje de error.
- La función verifica si el valor de
-
Generación de la cláusula
OFFSET:- Si
$offsetes mayor que 0, la función construye la cláusula SQLOFFSETconcatenando el valor de$offset. - Si
$offsetes 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.
- Si
-
Retorno de la cláusula
OFFSET:- La función retorna la cadena que representa la cláusula
OFFSETgenerada o una cadena vacía si no se aplica ningún desplazamiento.
- La función retorna la cadena que representa la cláusula
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;
}