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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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