Benutzer-Werkzeuge

Webseiten-Werkzeuge


repository_datenbank

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