首页 > 解决方案 > 从调度程序任务中的存储库中删除所有()

问题描述

对于我的调度程序任务,我想在每次调度程序运行时在更新之前从存储库中删除所有现有数据。我可以使用 add() 从 XML 文件中保存和添加新数据。

类 FunctionFetcherService {

public function fetchRoomandLesson() {
    $path = 'http:abc.dll?type=room&content=xml';
    $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
    $roomRepository = $objectManager->get("School\\booking\\Domain\\Repository\\RoomsRepository");
    $this->roomRepository->removeAll();
    $xml = simplexml_load_file($path);
    $json = json_encode($xml);
    $xmlArray = json_decode($json, true);
    $serialized_array = serialize($xmlArray);
    $unserialized_array = unserialize($serialized_array);

在 Null 上调用 removeAll() 时发生错误。我还提到了已经提出的问题:在调度程序任务中使用 removeAll()但它不起作用。

标签: typo3extbase

解决方案


您应该创建一个Extbase CommandController作为您的调度程序任务。所有已注册的命令在调度程序和 CLI 命令中都可用。

通过使用 CommandControllers,您可以使用完整的 extbase 框架,例如依赖注入和验证。

请注意,CommandController 命令方法必须Command像链接的示例一样后缀。


推荐阅读