我不确定我是否正确理解了您的问题,但我们遇到了类似的情况。我们所做的是在连接中添加了第二个数据库。
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 对象,然后几乎可以互换使用它们。
不过,这取决于您在数据库中拥有的数据,以及您想用它们做什么。