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 SQLOFFSET
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
-
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.
- La función verifica si el valor de
-
Generación de la cláusula
OFFSET
:- Si
$offset
es mayor que 0, la función construye la cláusula SQLOFFSET
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.
- Si
-
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.
- 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;
}