ProcessWire - SQL nutzen
Aus Wikizone
Version vom 2. November 2017, 08:34 Uhr von Steff (Diskussion | Beiträge)
Manchmal kann es sinnvoll sein direkte SQL Abfragen auf die Datenbank zu machen. Vor allem lassen sich so manchmal unnötige Schleifen mit denen man viele Anfragen erzeugt mit einer Abfrage ersetzen (z.B. ein schöner JOIN )
Beispiel von Ryan: Wie oft wurde eine Option genutzt.
$field = $fields->get('my_options_field');
$table = $field->getTable();
$query = $database->query("SELECT data FROM $table");
$ids = $query->fetchAll(PDO::FETCH_COLUMN);
$count_values = array_count_values($ids); // count the frequency of values in the array
arsort($count_values); // sort highest to lowest
// use the option IDs and counts as needed, for example:
$all_options = $field->type->getOptions($field);
echo '<ul>';
foreach($count_values as $option_id => $count) {
$option = $all_options->get($option_id);
echo "<li>{$option->title} ({$count})</li>";
}
echo '</ul>';