@Spooky
JEtzt muss ich hier doch noch mal Nachfragen.
Die Einsatzkategorie wird für jeden "Nachricht" festgelegt. Das führt jetzt aber dazu, das ich bei mehreren Newseinträgen die Datenbankabfragen mehrfach ausgeführt werden.
Ich habe z.B drei Nachrichten erstellt und die Kategorie vergeben.
Am Ende sieht das Array so aus:
Code:
array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } } array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } } array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } } array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } } array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } } array(3) { [0]=> array(1) { ["einsatzkat"]=> string(2) "B2" } [1]=> array(1) { ["einsatzkat"]=> string(2) "B3" } [2]=> array(1) { ["einsatzkat"]=> string(2) "B2" } }
Ich nehme an das es hier dran liegt:
Code:
public function onParseArticles(FrontendTemplate $template, array $newsEntry, Module $module): void
{
$request = $this->requestStack->getCurrentRequest();
$req_year = $request->query->get("year");
if ( empty($req_year) ) {
$req_year = date("Y");
}
$result = $this->getStatsFromDB($req_year);
$template->stats = $result;
}
bzw hier:
Code:
private function getStatsFromDB($news_year=2020): array
{
$sql = "SELECT einsatzkat FROM `tl_news` WHERE (einsatzkat LIKE 'B%' or einsatzkat LIKE 'G%' or einsatzkat LIKE 'H%' or einsatzkat LIKE 'S%' or einsatzkat LIKE 'W%')
AND year(from_unixtime(date)) = ?" ;
$database = \Database::getInstance()
->prepare($sql)
->execute($news_year);
$result = $database->fetchAllAssoc();
return $result;
}
Für Jeden Artikel wird eine Datenbankabfrage ausgeführt. Aber es würde ja reichen, die SQL-Abfrage einmalig auszuführen. Gibt es eine Möglichkeit das Problem zu umgehen?
Ich könnte ja prüfen, ob das Array schon befüllt ist und dann einfach die Abfrage überspringen. Aber wäre das der richtige Weg? Oder gibt es einen Contao-Weg
Lesezeichen