DataBaseWhere

La clase DataBaseWhere en FacturaScripts se utiliza para filtrar resultados en los métodos all(), count() y loadFromCode() de los modelos. Podemos pasar un array de DataBaseWhere a estos métodos para aplicar los filtros que deseemos.

Introducción a la Clase

Para utilizar DataBaseWhere, primero debemos asegurarnos de cargar la clase:

use FacturaScripts\Core\Base\DataBase\DataBaseWhere;

Constructor de DataBaseWhere

  • fields: Nombre del campo sobre el que se realiza el filtro. Puede ser una lista, como 'campo1|campo2|campo3'.
  • value: Valor por el cual se filtra. También puede comparar con otro campo usando el prefijo field:.
  • operator: (opcional) '=' por defecto. Operadores permitidos: =, <, >, <=, >=, !=, IN, NOT IN, IS, IS NOT, LIKE, XLIKE, REGEXP.
  • operation: (opcional) 'AND' por defecto. Operadores lógicos: AND, OR. Importante: esta operación se aplica al propio elemento, no al siguiente.

Ejemplo: Obtener productos de la familia 1234

$productoModel = new Producto();
$where = [new DataBaseWhere('codfamilia', '1234')];
$productos1234 = $productoModel->all($where);

Este código devuelve todos los productos que pertenecen a la familia 1234.

Ejemplo: Stock por debajo del mínimo

$stockModel = new Stock();
$where = [new DataBaseWhere('cantidad', 'field:stockmin', '<')];
$stockMinimo = $stockModel->all($where);

Ejemplo: Facturas de un cliente en diciembre de 2020

$facturaModel = new FacturaCliente();
$where = [
   new DataBaseWhere('codcliente', '1'),
   new DataBaseWhere('fecha', '01-12-2020', '>='),
   new DataBaseWhere('fecha', '31-12-2020', '<='),
];
$facturasDiciembre = $facturaModel->all($where);

Ejemplo: Contar facturas sin pagar de un cliente

$facturaModel = new FacturaCliente();
$where = [
   new DataBaseWhere('codcliente', '1'),
   new DataBaseWhere('pagada', false),
];
$numero = $facturaModel->count($where);

Ejemplo: Variantes con referencia o código de barras 666

$varianteModel = new Variante();
$where = [new DataBaseWhere('codbarras|referencia', '666')];
$variantes666 = $varianteModel->all($where);

Ejemplo: Borrar clientes sin teléfono o con email admin@admin.com

$clienteModel = new Cliente();
$where = [
   new DataBaseWhere('telefono1', ''),
   new DataBaseWhere('email', 'admin@admin.com', '=', 'OR'),
];
foreach($clienteModel->all($where) as $cliente) {
   $cliente->delete();
}

El operador OR se aplica aquí al segundo elemento.

Uso de Operadores

Operador IS e IS NOT

$where = [new DataBaseWhere('nombre', null)];
// RESULTADO: where nombre IS NULL

$where = [new DataBaseWhere('nombre', null, 'IS')];
// RESULTADO: where nombre IS NULL

$where = [new DataBaseWhere('nombre', null, 'IS NOT')];
// RESULTADO: where nombre IS NOT NULL

Operador IN y NOT IN

$where = [
   new DataBaseWhere('codejercicio', '2018'),
   new DataBaseWhere('codcuentaesp', 'IVAREX,IVAREP,IVARRE', 'IN'),
];
// RESULTADO: where codejercicio = '2018' and codcuentaesp in ('IVAREX','IVAREP','IVARRE')

$where = [new DataBaseWhere('codcliente', "select codcliente from contactos where codpais = 'ESP'", 'IN')];
// RESULTADO: where codcliente IN (select codcliente from contactos where codpais = 'ESP')

Operador LIKE

$where = [new DataBaseWhere('nombre', 'sanchez', 'LIKE')];
// RESULTADO: where nombre LIKE '%sanchez%'

Buscar al principio o al final:

  • Al principio: 'sanchez%'
  • Al final: '%sanchez'

Operador XLIKE

Este operador permite buscar múltiples palabras. Por ejemplo:

$where = [new DataBaseWhere('descripcion', 'gran caja', 'XLIKE')];
// RESULTADO: where (descripcion LIKE '%gran%' AND descripcion LIKE '%caja%')
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.40534s

Soporte