ProcessWire - SQL nutzen: Unterschied zwischen den Versionen
Aus Wikizone
Steff (Diskussion | Beiträge) |
Steff (Diskussion | Beiträge) |
||
| Zeile 1: | Zeile 1: | ||
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 ) | 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 | + | '''Beispiel von Ryan: Wie oft wurden Optionen eines Option Select Feldes ausgewählt.''' |
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
Version vom 2. November 2017, 08:35 Uhr
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 wurden Optionen eines Option Select Feldes ausgewählt.
$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>';