administrador.base.orm.where.diferente_de - gamboamartin/administrador GitHub Wiki
diferente_de
La función diferente_de
es una función privada que genera una cláusula SQL para comparar si un campo es diferente de un valor específico. La función valida el campo, asegura que no sea numérico, y genera una cláusula con un operador <>
(diferente). Además, utiliza una función auxiliar para determinar si debe incluir un operador AND
antes de la cláusula.
Signatura
private function diferente_de(string $campo, string $diferente_de_sql, string $value): string|array
Parámetros
-
string $campo
:
El nombre del campo en la tabla que se va a comparar. Debe ser un string no vacío que represente una columna en la base de datos. -
string $diferente_de_sql
:
La cláusula SQL existente. Se utiliza para determinar si se debe agregar un operadorAND
para concatenar la nueva condición con las condiciones existentes. -
string $value
:
El valor con el que se comparará el campo, para asegurarse de que sean diferentes.
Retorna
string|array
:
Retorna la cláusula SQL generada si la validación es exitosa. En caso de error, retorna un array de error generado por$this->error->error()
.
Explicación Detallada
-
Validación del campo:
- La función valida que el campo no esté vacío y que no sea numérico. Si falla la validación, se genera un mensaje de error y se retorna un array con el mensaje de error.
-
Inserción del operador
AND
si es necesario:- La función llama a
and_filtro_fecha()
para determinar si se debe incluir un operadorAND
en la cláusula SQL. Esto es útil si el valor de$diferente_de_sql
ya contiene otras condiciones SQL.
- La función llama a
-
Protección de datos contra inyecciones SQL:
- Tanto el campo como el valor son procesados con
addslashes()
para escapar caracteres especiales y prevenir inyecciones SQL.
- Tanto el campo como el valor son procesados con
-
Generación de la cláusula SQL:
- La función genera la cláusula SQL en la forma
campo <> 'value'
, asegurándose de que el campo y el valor estén debidamente escapados y concatenados con un posibleAND
.
- La función genera la cláusula SQL en la forma
-
Retorno de la cláusula SQL:
- La función retorna la cláusula SQL generada.
Ejemplos
$campo = 'id_producto';
$diferente_de_sql = '';
$value = '123';
$resultado = $this->diferente_de($campo, $diferente_de_sql, $value);
// Resultado esperado:
// " id_producto <> '123' "
Código de la Función
private function diferente_de(string $campo, string $diferente_de_sql, string $value): string|array
{
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: "Error campo esta vacio", data: $campo, es_final: true);
}
if(is_numeric($campo)){
return $this->error->error(mensaje: "Error campo debe ser un atributo del modelo no un numero",
data: $campo, es_final: true);
}
$and = (new \gamboamartin\where\where())->and_filtro_fecha(txt: $diferente_de_sql);
if(errores::$error){
return $this->error->error(mensaje: "Error al integrar AND", data: $and);
}
$campo = addslashes($campo);
$value = addslashes($value);
return " $and $campo <> '$value' ";
}