Typo3-计划命令中的bulkInsert-代码应驻留在哪里?

时间:2018-09-10 12:02:30

标签: database model-view-controller insert typo3 bulkinsert

我已经使用Extension Builder创建了一个扩展。这样就创建了必要的表以及存储库和控制器文件。

我用每天调用一次的方法(通过调度程序扩展)创建了一个命令类。该命令的目的是截断表并将数据替换为新行的大容量插入。

我找到了bulkInsert的示例代码,但是我不确定应该放在哪里?

我本来以为将其放入Controller是合理的解决方案,但也许有更好的放置位置了?还是运行批量插入的更好方法?

批量插入需要我提供表名,即“ testTable”是表名,我可以像这样建立连接:

$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('testTable');

...但是像这样连接到表名感觉不对,因为扩展的其余部分利用了存储库。感觉有点脱节。

任何人都可以给我有关在什么地方以及如何执行此操作的指导,以使我的源代码更加美观和紧凑。

1 个答案:

答案 0 :(得分:0)

解决方案是像这样创建一个单独的表连接实例:

$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tblname);

然后使用“ bulkInsert”工具,再次传递表名,记录数组和关联的字段名数组

$connection->bulkInsert($tblname, $records, $fieldnames);

最好直接通过存储库提供bulkInsert,但是我敢肯定有一些逻辑上的原因使之不可能。但是无论如何,这种解决方案都行之有效。