2016-03-29 1 views
1

У меня есть простое расширение extbase (typo3) с одним контроллером и одной моделью/представлением. Теперь я хочу «выбрать» базу данных MSSQL и вывести результаты в мое представление. Я не нашел ссылки на то, как это реализовать.Как использовать внешнюю базу данных в extbase/fluid

Как я могу подключиться к зарубежной базе данных из моего расширения extbase/fluid и использовать данные из этой базы данных (MSSQL)? Как выполнить запрос в «extDB» и как распечатать результат в моем жидкостном представлении.

Это, как я интегрировать DB (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', 
); 

Любая помощь приветствуется.

ответ

0

Вы можете попробовать расширение Database Abstraction Layer (dbal).

+0

Я уже видел это. но вопрос в том, как я могу выполнить запрос в БД, к которому я подключился через dbal/adodb ?? – d4ny3l

+0

, чтобы быть более ясным: у меня есть база данных MSSQL на другом сервере, чем у моего экземпляра T3. Я просто хочу прочитать данные из представления на этой базе данных MSSQL и вывести его в расширение extbase. – d4ny3l

0

Пример использования глобальной переменной $ GLOBALS. Это проверено на Typo3 4.x, но с небольшими обновлениями (?), Возможно, работает над Typo 6.2 (например, удалить устаревший t3lib_div и использовать 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

Без использования DBAL, конечно. –