Typo3 - 来自预定命令的 bulkInsert - 代码应该放在哪里?
Typo3 - bulkInsert from a scheduled command - where should the code reside?
我使用 Extension Builder 创建了一个扩展。这已经创建了我必需的 table 以及存储库和控制器文件。
我创建了一个命令 class,其中包含一个每天调用一次的方法(通过调度程序扩展)。该命令的目的是 t运行 分类 table 并用新行的批量插入替换数据。
我找到了 bulkInsert 的示例代码,但是我不确定应该把它放在哪里?
我最初认为将它放在 Controller 中是合乎逻辑的解决方案,但也许有更好的地方来放置它?或者 运行 批量插入的更好方法?
批量插入需要我提供 table 名称,即 "testTable" 是 table 名称,我可以这样建立连接:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('testTable');
...但是像这样连接到 table 名称感觉不对,因为扩展的其余部分使用存储库。感觉有点脱节。
任何人都可以指导我应该在哪里以及如何做到这一点,以保持我的源代码美观和紧凑。
解决方案是创建一个单独的 table 连接实例,如下所示:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tblname);
然后利用 "bulkInsert" 工具,传递 table 名称(再次)、记录数组和关联字段名称数组
$connection->bulkInsert($tblname, $records, $fieldnames);
直接通过存储库提供 bulkInsert 会很好,但我确信有一些合乎逻辑的原因导致这不可能。但是这个解决方案无论如何都很好用。
我使用 Extension Builder 创建了一个扩展。这已经创建了我必需的 table 以及存储库和控制器文件。
我创建了一个命令 class,其中包含一个每天调用一次的方法(通过调度程序扩展)。该命令的目的是 t运行 分类 table 并用新行的批量插入替换数据。
我找到了 bulkInsert 的示例代码,但是我不确定应该把它放在哪里?
我最初认为将它放在 Controller 中是合乎逻辑的解决方案,但也许有更好的地方来放置它?或者 运行 批量插入的更好方法?
批量插入需要我提供 table 名称,即 "testTable" 是 table 名称,我可以这样建立连接:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('testTable');
...但是像这样连接到 table 名称感觉不对,因为扩展的其余部分使用存储库。感觉有点脱节。
任何人都可以指导我应该在哪里以及如何做到这一点,以保持我的源代码美观和紧凑。
解决方案是创建一个单独的 table 连接实例,如下所示:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tblname);
然后利用 "bulkInsert" 工具,传递 table 名称(再次)、记录数组和关联字段名称数组
$connection->bulkInsert($tblname, $records, $fieldnames);
直接通过存储库提供 bulkInsert 会很好,但我确信有一些合乎逻辑的原因导致这不可能。但是这个解决方案无论如何都很好用。