Je ne suis pas sûr d'avoir compris votre question, mais nous avons eu un cas similaire. Ce que nous avons fait, c'est que nous avons ajouté la deuxième base de données dans les connexions.
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',
],
],
],
ensuite ajouté une classe personnalisée qui obtient les données de la base de données avec le Query Builder
Vous devez d'abord ouvrir une connexion à votre base de données, puis créez une requête Builder objet pour cette connexion dans la classe que vous utilisez pour obtenir les données.
/**
* @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);
}
Je jette chaque ligne de résultat à un modèle « ExternalObject » que j'ajouté, il cartographié les champs aussi près que possible de mes objets Extbase conventionnels et a été en mesure de les utiliser de façon presque interchangeable. Cela dépend des données que vous avez dans votre base de données, et des choses que vous voulez faire avec elles.
Bonne idée, mais je pense que cela ne fonctionnera pas en raison de champs manquants dans les tables étrangères. Il n'est pas possible de mapper 1 sur 1. Tanks de toute façon :) Je suis tombé sur https://github.com/cyberhouse/typo3-doctrine-orm. – Inceddy