Typo3 - bulkInsert из запланированной команды - где должен находиться код? - PullRequest
0 голосов
/ 10 сентября 2018

Я создал расширение с помощью Extension Builder.Это создало мои необходимые таблицы и файлы репозитория и контроллеров.

Я создал класс команд с методом, который вызывается один раз в день (через расширение планировщика).Цель команды - усечь таблицу и заменить данные массовой вставкой новых строк.

Я нашел пример кода для bulkInsert, однако я не уверен, куда его поместить?

Первоначально я предполагал, что поместить его в контроллер было логичным решением, но, возможно, есть лучшее место для его размещения?Или лучший способ запустить массовую вставку?

При массовой вставке требуется указать имя таблицы, т. Е. Где «testTable» - это имя таблицы, я могу установить соединение следующим образом:

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

... но при подключении кИмя таблицы, как это, кажется неправильным, так как остальная часть расширения использует хранилище.Это кажется немного несвязным.

Кто-нибудь может дать мне какое-либо руководство о том, где и как я должен это делать, чтобы мой исходный код был красивым и аккуратным.

1 Ответ

0 голосов
/ 21 сентября 2018

Решением было создать отдельный экземпляр соединения с таблицей, например:

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

, а затем использовать инструмент «bulkInsert», передавая имя таблицы (снова), массив записей и массив имен связанных полей

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

Было бы неплохо, чтобы массовая вставка была доступна напрямую через репозиторий, но я уверен, что есть логическая причина, почему это невозможно. Но это решение в любом случае работает хорошо.

...