我已经使用Extension Builder创建了一个扩展。这样就创建了必要的表以及存储库和控制器文件。
我用每天调用一次的方法(通过调度程序扩展)创建了一个命令类。该命令的目的是截断表并将数据替换为新行的大容量插入。
我找到了bulkInsert的示例代码,但是我不确定应该放在哪里?
我本来以为将其放入Controller是合理的解决方案,但也许有更好的放置位置了?还是运行批量插入的更好方法?
批量插入需要我提供表名,即“ testTable”是表名,我可以像这样建立连接:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('testTable');
...但是像这样连接到表名感觉不对,因为扩展的其余部分利用了存储库。感觉有点脱节。
任何人都可以给我有关在什么地方以及如何执行此操作的指导,以使我的源代码更加美观和紧凑。
答案 0 :(得分:0)
解决方案是像这样创建一个单独的表连接实例:
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tblname);
然后使用“ bulkInsert”工具,再次传递表名,记录数组和关联的字段名数组
$connection->bulkInsert($tblname, $records, $fieldnames);
最好直接通过存储库提供bulkInsert,但是我敢肯定有一些逻辑上的原因使之不可能。但是无论如何,这种解决方案都行之有效。