Método all() de los modelos
El método all() de los modelos de FacturaScripts devuelve un array con todos los registros de un modelo que cumplen con los parámetros especificados.
Parámetros
- where: (opcional) Filtros a aplicar al listado.
- Un array de filtros Where.
- order: (opcional) Ordenación a aplicar.
- Un array de uno o más elementos (clave => valor), donde la clave es el nombre de la columna y el valor debe ser ASC para orden ascendente o DESC para orden descendente.
- offset: (opcional) Permite indicar un desplazamiento desde el primer registro a recorrer.
- limit: (opcional) Permite indicar el número máximo de registros a devolver.
- Valor por defecto: 0 (todos los registros).
foreach (Producto::all() as $producto) {
// $producto es el producto que estamos consultando en este momento
}
Ejemplo: Obtener todos los usuarios
Llamando a all() sin ningún parámetro obtenemos todos los registros de la tabla, en este caso todos los usuarios:
$usuarios = User::all();
Al ser un método estático podemos llamarlo directamente sin tener que crear un objeto primero.
Ejemplo: Obtener todos los productos de la familia 1234
Podemos filtrar los registros que queremos obtener aplicando filtros Where, que deben ir en un array en el primer parámetro del método all():
$where = [Where::eq('codfamilia', '1234')];
$productos1234 = Producto::all($where);
Ejemplo: Obtener los últimos 5 albaranes con total >100 del cliente 123
Con el segundo parámetro, orderBy, podemos cambiar la ordenación de los resultados. Con el cuarto parámetro limitamos el número de resultados que obtenemos.
$where = [
Where::eq('codcliente', '123'),
Where::gt('total', 100),
];
$orderBy = ['fecha' => 'DESC'];
$ultimosAlbaranes = AlbaranCliente::all($where, $orderBy, 0, 5);
Ejemplo: recorrer un listado gigante de 100 en 100
Con los parámetros offset y limit podemos acotar los registros a obtener, lo que es perfecto para recorrer listados gigantes sin consumir toda la memoria:
$offset = 0;
$limit = 100;
do {
// obtenemos los siguientes 100 productos
$productos = Producto::all([], ['idproducto' => 'ASC'], $offset, $limit);
// recorremos los productos
foreach($productos as $producto) {
// tu código aquí
}
$offset += $limit; // actualizamos el offset para obtener los siguientes 100
} while (count($productos) > 0);