FindMany() - ProcessWire API
Aus Wikizone
Version vom 29. Januar 2019, 07:42 Uhr von Steff (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Die findMany Funktion ist speziell für Zugriffe auf große Datenbestände ausgelegt. Es ist im Prinzip ein lazyLoad find. So können selbst bei 10.000den Date…“)
Die findMany Funktion ist speziell für Zugriffe auf große Datenbestände ausgelegt. Es ist im Prinzip ein lazyLoad find. So können selbst bei 10.000den Datensätzen Memory Overflows verhindert werden, ohne dass man mit Seiten arbeiten muss.
https://processwire.com/api/ref/pages/find-many/
Usage
// basic usage $items = $pages->findMany($selector); // usage with all arguments $items = $pages->findMany($selector, array $options = []);
// Calculating a total from 20000 pages $totalCost = 0; $items = $pages->findMany("template=foo"); // 20000 pages foreach($items as $item) {
$totalCost += $item->cost;
} echo "Total cost is: $totalCost";
Arguments
Name Type(s) Description selector string, array, Selectors
Selector to find pages options (optional) array Options to modify behavior. See Pages::find() $options argument for details.
Return value
PageArray
findMany() mit User Objekten
That's correct. A solution is to use $pages->findMany() with the user template.
$members = $cache->get('members', '+10 minutes', function($pages) {
$member_pages = $pages->findMany('template=user, roles=member, sort=lastname, limit=3000, check_access=0');
return json_encode($member_pages->explode(['name', 'email'])); // Whatever fields/properties you need from the member pages
});