TYPO3扩展不适合Extbase架构

时间:2017-09-21 10:26:12

标签: typo3 typo3-8.x

自Doctrines DBAL实施以来,我们现在可以使用不同的数据源/连接(Hooray!)。

我们现在想要使用这个新功能在TYPO3中嵌入我们的一项服务。

现在的问题是,此辅助数据库中的域模型与典型的Extbase架构不匹配。例如。它不使用int ID,也不会嵌套任何类型的父ID。

有没有人有这个用例的经验或有一个例子? 或者我是否必须设置完整的并行Doctrine ORM来处理这些模型?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我不确定我是否理解你的问题,但我们也有类似的情况。我们所做的是在连接中添加了第二个数据库。

LocalConfiguration.php

'DB' => [
        'Connections' => [
            'Default' => [
                'charset' => 'utf8',
                'dbname' => 'default_dbname',
                'driver' => 'mysqli',
                'host' => 'default_dbhost',
                'password' => 'default_dbpwasswd',
                'user' => 'default_dbuser',
            ],
            'Secondary' => [
                'charset' => 'utf8',
                'dbname' => 'secondary_dbname',
                'driver' => 'mysqli',
                'host' => 'secondary_dbhost',
                'password' => 'secondary_dbpasswd',
                'user' => 'secondary_dbuser',
            ],
        ],
    ],

然后添加了一个自定义类,该类使用Query Builder

从数据库中获取数据

首先必须打开与数据库的连接,然后在用于获取数据的类中为该连接创建查询构建器对象。

/**
* @var Connection
*/
private $connection;

$connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
$this->secondaryConnection = $connectionPool->getConnectionByName('Secondary');

$queryBuilder = $this->secondaryConnection->createQueryBuilder();

// now you can get the data with query statements as linked above
$statement = $queryBuilder->select('your_field')->from('your_table')->execute();
while ($row = $statement->fetch()) {
   $myObjects[] = new \Vendor\Extension\Domain\Model\ExternalObject($row);
}

我将每个结果行转换为" ExternalObject"我添加的模型,它尽可能地将字段映射到我的传统Extbase对象,然后几乎可以互换地使用它们。 这取决于您在数据库中拥有的数据,以及您想要对它们执行的操作。