【问题标题】:TYPO3 Extension not fitting the Extbase SchemaTYPO3 扩展不适合 Extbase 架构
【发布时间】:2017-09-21 10:26:11
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: typo3 typo3-8.x


    【解决方案1】:

    【讨论】:

    【解决方案2】:

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

    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 对象,然后几乎可以互换使用它们。 不过,这取决于您在数据库中拥有的数据,以及您想用它们做什么。

    【讨论】:

    • 好主意。我太专注于关系映射和持久性,所以我忘记了使用简单的 DAO 并手动对它们进行水合。由于 Typo3 仅用于过滤和查看模型,因此不需要完整的 ORM。
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多