【问题标题】:How to use a foreign database in extbase/fluid如何在 extbase/fluid 中使用外部数据库
【发布时间】:2016-03-29 07:13:04
【问题描述】:

我有一个简单的 extbase 扩展 (typo3),它带有一个控制器和一个模型/视图。现在我想“选择 *”一个 MSSQL 数据库并在我的视图中输出结果。我还没有找到任何关于如何实现这一点的参考。

如何从我的 extbase/fluid 扩展中连接到外部数据库并使用来自该数据库 (MSSQL) 的数据?如何在“extDB”上执行查询以及如何在流体视图中打印结果。

这就是我集成数据库(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',
);

感谢任何帮助。

【问题讨论】:

    标签: fluid extbase typo3-6.2.x


    【解决方案1】:

    你可以试试扩展Database Abstraction Layer (dbal)

    【讨论】:

    • 我已经看到了。但问题是,如何在通过 dbal/adodb 连接的数据库上执行查询??
    • 更清楚一点:我在与 T3 实例不同的服务器上有一个 MSSQL DB。我只想从这个 MSSQL DB 的视图中读取数据并将其输出到我的 extbase 扩展中。
    【解决方案2】:

    示例使用全局变量 $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);
            ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多