Modelos Especiales

Existen varios modelos que no tienen correspondencia con tablas físicas en la base de datos, lo que implica que no pueden ser utilizados para la grabación o eliminación de datos. La función de estos modelos es complementar el resto de los modelos, facilitando las operaciones de lectura de información de manera global, evitando así la necesidad de crear métodos repetidos en distintos modelos.

CodeModel

Este modelo se utiliza cuando necesitamos obtener una lista de registros de alguna tabla, pero solo con un campo de código o identificativo y su descripción. Al ser un modelo muy simple, no incluye todos los procesos de carga que normalmente llevan los modelos, limitándose únicamente a la lectura y devolución de los datos solicitados. Este modelo se utiliza, por ejemplo, en la carga del widget de tipo «select», donde se presenta al usuario una lista de opciones para que pueda seleccionar una. El único método que ofrece es el all, el cual, a diferencia de otros modelos, es estático. Esto significa que no es necesario crear una instancia del objeto CodeModel para su ejecución.

Ejemplo de carga de lista con código y descripción

El último parámetro de la llamada al método all, denominado $addEmpty, permite indicar si necesitamos que al principio del array que se devuelve con los datos se inserte un CodeModel en blanco. Esto es útil cuando queremos asignar los valores de retorno a un widget select donde el valor no es obligatorio.

$rows = CodeModel::all('agentes', 'codagente', 'nombre', false);

TotalModel

Este modelo está especialmente diseñado para cálculos estadísticos (SUM, AVG, COUNT, MAX, MIN, etc.). Aunque no es obligatorio, podemos ejecutar los cálculos agrupando por un campo «código». Al ejecutar el modelo all, se devuelve un array de TotalModel (code, totals), donde code contiene el identificador de agrupación y totals es un array con cada uno de los cálculos solicitados.

Ejemplo: Albaranes de venta sin facturar por cliente

$where = [new DataBase\DataBaseWhere('ptefactura', TRUE)];
$totals = Model\TotalModel::all('albaranescli', $where, ['total' => 'SUM(total)', 'count' => 'COUNT(1)'], 'codcliente');
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.39963s

Soporte