Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
repository_datenbank [24/09/2018 20:07]
Thomas Berscheid [Volltextsuche]
repository_datenbank [03/05/2019 10:17] (aktuell)
Thomas Berscheid [Mehrere Tabellen mit JOIN abfragen]
Zeile 167: Zeile 167:
   public function tagShow($pid)   public function tagShow($pid)
   {   {
-    $queryBuilder = GeneralUtility::​makeInstance(ConnectionPool::​class)->​getQueryBuilderForTable('​tx_ibkblog_domain_model_tag'​);+    ​$tagShowArray = []; 
 +    $table = "​tx_ibkblog_domain_model_tag";​ 
 +    ​$queryBuilder = GeneralUtility::​makeInstance(ConnectionPool::​class)->​getQueryBuilderForTable($table);
                
     $tagShowArray = $queryBuilder ​     $tagShowArray = $queryBuilder ​
Zeile 198: Zeile 200:
   }   }
     ​     ​
-Wie man an diesem Beispiel sieht: Die Nutzung der ConnectionPool Klasse bringt einen sehr strukturierten Code mit sich, anhand dessen man Monate nach dem Schreiben der Abfrage recht schnell versteht, was diese Funktion leistet.+Wie man an diesem Beispiel sieht: Die Nutzung der **ConnectionPool** Klasse bringt einen sehr strukturierten Code mit sich, anhand dessen man Monate nach dem Schreiben der Abfrage recht schnell versteht, was diese Funktion leistet. 
 + 
 +==== Kreuztabellenabfrage über mehrere Felder ==== 
 + 
 +Für die Bildergalerie auf der Georgienseite benötigen wir für eine Filterung nach Tags eine Kreuztabellenabfrage. Bilder und Tags stehen in einer n:m Beziehung zueinander. Entsprechend müssen die vorhandenen Tags und ihre Verknüpfung abgefragt werden. 
 + 
 +  $tagArray = []; 
 +  $table = "​tx_ibkbilder_domain_model_tag";​ 
 +  $queryBuilder = GeneralUtility::​makeInstance(ConnectionPool::​class)->​getQueryBuilderForTable($table);​ 
 + 
 +  $tagArray = $queryBuilder  
 +    ->​select('​tx_ibkbilder_domain_model_tag.tag',​  
 +      '​tx_ibkbilder_bilder_tag_mm.uid_local',​  
 +      '​tx_ibkbilder_bilder_tag_mm.uid_foreign',​  
 +      '​tx_ibkbilder_domain_model_bilder.uid',​  
 +      '​tx_ibkbilder_domain_model_bilder.bildergalerie'​) 
 +    ->​from('​tx_ibkbilder_domain_model_tag'​) 
 +    ->​from('​tx_ibkbilder_bilder_tag_mm'​) 
 +    ->​from('​tx_ibkbilder_domain_model_bilder'​) 
 +    ->​where( 
 +      $queryBuilder->​expr()->​eq( 
 +        '​tx_ibkbilder_bilder_tag_mm.uid_local',​  
 +        $queryBuilder->​quoteIdentifier('​tx_ibkbilder_domain_model_bilder.uid'​) 
 +      ) 
 +    ) 
 +    ->​andWhere( 
 +      $queryBuilder->​expr()->​eq( 
 +        '​tx_ibkbilder_domain_model_tag.uid',​  
 +        $queryBuilder->​quoteIdentifier('​tx_ibkbilder_bilder_tag_mm.uid_foreign'​) 
 +      ) 
 +    ) 
 +    ->​andWhere( 
 +      $queryBuilder->​expr()->​eq( 
 +        '​tx_ibkbilder_domain_model_bilder.bildergalerie',​  
 +        $queryBuilder->​createNamedParameter($bildergalerie,​ \PDO::​PARAM_INT) 
 +      ) 
 +    ) 
 +    ->​orderBy('​tx_ibkbilder_domain_model_tag.tag',​ '​ASC'​) ​            
 +    ->​groupBy('​tx_ibkbilder_domain_model_tag.tag'​) ​            
 +    ->​execute() 
 +    ->​fetchAll();​ 
 + 
 ==== Volltextsuche über mehrere Felder ==== ==== Volltextsuche über mehrere Felder ====
   ​   ​
  • repository_datenbank.1537812477.txt.gz
  • Zuletzt geändert: 24/09/2018 20:07
  • von Thomas Berscheid