administrador.base.orm.modelo.sentencia_or - gamboamartin/where GitHub Wiki
sentencia_or
La función sentencia_or
es una función privada que construye una sentencia SQL utilizando el operador OR
para agregar una condición a una sentencia SQL existente. Si el campo proporcionado está vacío, la función devuelve un mensaje de error.
Signatura
private function sentencia_or(string $campo, string $sentencia, string $value): string|array
Parámetros
$campo (string): Nombre del campo de la base de datos que se quiere añadir a la sentencia SQL. Este campo no debe estar vacío. $sentencia (string): La sentencia SQL existente a la cual se le añadirá la nueva condición. Puede estar vacía si es la primera condición que se añade. $value (string): El valor que se utilizará para comparar con el campo en la condición SQL.
Retorna
- array|string: Retorna la sentencia SQL construida como una cadena de texto. Si el campo $campo está vacío, se devuelve un array con un mensaje de error.
Explicación Detallada
-
Limpieza y Validación del Campo:
-
- La función comienza eliminando cualquier espacio en blanco alrededor del campo ($campo) usando trim. Luego, verifica si el campo está vacío. Si el campo está vacío, la función devuelve un mensaje de error y marca el proceso como final (es_final: true).
-
Construcción de la Sentencia SQL:
-
- Si $sentencia no está vacía, se añade el operador OR antes de agregar la nueva condición. La nueva condición se construye concatenando el campo, el operador =, y el valor proporcionado.
-
Retorno de la Sentencia SQL:
-
- La función retorna la sentencia SQL actualizada.
Ejemplos
$campo = 'nombre';
$sentencia = "apellido = 'García'";
$value = 'Juan';
$sql = $this->sentencia_or($campo, $sentencia, $value);
// Resultado esperado: "apellido = 'García' OR nombre = 'Juan'"
Código de la Función
private function sentencia_or(string $campo, string $sentencia, string $value): string|array
{
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: 'Error el campo esta vacio',data: $campo, es_final: true);
}
$or = '';
if($sentencia !== ''){
$or = ' OR ';
}
$sentencia.=" $or $campo = '$value'";
return $sentencia;
}