2016-03-29 6 views
1

私は、1つのコントローラと1つのモデル/ビューを持つ単純なextbase拡張子(typo3)を持っています。今私はMSSQLデータベースを "選択*"して結果を私の見解で出力したいと思います。私はこれをどのように実現するための参照を発見していない。extbase/fluidに外部データベースを使用する方法

extbase/fluidエクステンションから外部データベースに接続し、このデータベース(MSSQL)のデータを使用するにはどうすればよいですか?私はどのようにして "extDB"のクエリを実行し、どのように私は流体ビューで結果を出力しますか?

$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', 
); 

すべてのヘルプは高く評価されています

これは私がDBを(DBAL/ADODB)を統合する方法です。

答えて

0

延長Database Abstraction Layer (dbal)を試すことができます。

+0

私はすでにそれを見ました。しかし、質問は、どのように私はdbal/adodb経由で接続しているDBのクエリを実行することができますですか? – d4ny3l

+0

をもっと明確にする:私はT3インスタンスとは別のサーバにMSSQL DBを持っています。私はちょうどこのMSSQL DBのビューからデータを読んで、エクステンション拡張で出力したいと思います。 – d4ny3l

0

例では、グローバル変数$ GLOBALSを使用します。これはTypo3 4.xでテストされていますが、ほとんどのアップデート(?)はTypo 6.2で動作しています(例:deprecated 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を使用しないでください。 –