2016-03-29 14 views
1

Ich habe eine einfache Extbase-Erweiterung (Typo3) mit einem Controller und einem Modell/View. Jetzt möchte ich eine MSSQL-Datenbank "auswählen *" und die Ergebnisse aus meiner Sicht ausgeben. Ich habe keinen Hinweis darauf gefunden, wie dies zu realisieren ist.Wie verwende ich eine fremde Datenbank in extbase/fluid

Wie kann ich eine Verbindung zu einer fremden Datenbank innerhalb meiner Extbase/Fluid-Erweiterung herstellen und die Daten aus dieser Datenbank (MSSQL) verwenden? Wie führe ich eine Abfrage auf der "extDB" aus und wie drucke ich das Ergebnis IN meiner Fluid-View aus. Diese

ist, wie ich die DB integrieren (dbal/adodb):

$TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array(
    'extDB' => array(
     'type' => 'adodb', 
     'config' => array(
      'driver' => 'mssql', 
      'username' => 'DB_username', 
      'password' => 'DB_password', 
      'host' => 'DB_host', 
      'database' => 'DB_used', 
     ) 
    ) 
); 


$TYPO3_CONF_VARS['EXTCONF']['dbal']['table2handlerKeys'] = array (
    'VIEW_TABLE1' => 'extDB', 
    'VIEW_TABLE2' => 'extDB', 
); 

Jede Hilfe sehr geschätzt wird.

Antwort

0

Sie können die Erweiterung Database Abstraction Layer (dbal) versuchen.

+0

habe ich schon gesehen. aber die Frage ist, wie kann ich eine Abfrage auf einer DB ausführen, die ich über dbal/adodb verbunden habe? – d4ny3l

+0

um klarer zu sein: Ich habe eine MSSQL DB auf einem anderen Server als meine T3-Instanz. Ich möchte nur die Daten aus einer Sicht auf diese MSSQL-DB lesen und sie in meiner Extbase-Erweiterung ausgeben. – d4ny3l

0

Beispiel Verwendung der globalen Variablen $ GLOBALS. Dies wird auf Typo3 4.x getestet, aber mit wenig Updates (?) Kann vielleicht an Typo 6.2 gearbeitet werden (zB entferne veraltetes t3lib_div und benutze GeneralUtility ...).

class Abstract { 

    /** 
    * Access to database 
    * 
    */ 
    private 
     $msdbHost = 'localhost', 
     $msdb = 'database-name', 
     $msdbUsername = 'xxx', 
     $msdbPassword = 'xxx'; 

    /** 
    * Connect to MS database 
    * 
    */ 
    public function connectDatabaseMs() { 

     $GLOBALS['MS_DB'] = t3lib_div::makeInstance('t3lib_DB'); 
     $GLOBALS['MS_DB']->sql_pconnect($this->msdbHost, $this->msdbUsername, $this->msdbPassword); 
     if($GLOBALS['MS_DB']->link) { 
      if($GLOBALS['MS_DB']->sql_select_db($this->msdb)) { 
       return $GLOBALS['MS_DB']; 
      } else { 
       t3lib_div::devLog('[tx_rtgms_lib::connectDatabaseUsers] Can not select database "'.$this->msdb.'".', $this->extKey, 3); 
      } 
     } else { 
      t3lib_div::devLog('[tx_rtgms_lib::connectDatabaseUsers] Can not connect to database "'.$this->msdb.'".', $this->extKey, 3); 
     } 

     $GLOBALS['MS_DB'] = FALSE; 
     return FALSE; 
    } 

    /** 
    * Example 
    * 
    */ 
    public function getData() { 

     $query = 'SELECT ...'; 
     $res = $GLOBALS['HOSTAFF_DB']->sql_query($query); 
     ... 
    } 
} 
+0

Ohne natürlich DBAL zu benutzen. –