ProcessWire - SQL nutzen

Aus Wikizone
Version vom 2. November 2017, 08:33 Uhr von Steff (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „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 Anfr…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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:

$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>';