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;
    }