在调度程序任务中使用removeAll()

时间:2014-02-26 11:54:32

标签: typo3 scheduler extbase

在做新东西之前,我希望我的scheduler-Task从数据库中删除所有条目,execute-function看起来像这样:

public function execute() {

  $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
  $jobRepository = $objectManager->get('\TYPO3\MyExtension\Domain\Repository\JobRepository');

  //clear DB
  $jobRepository->removeAll();

  (...)//insert new entries to DB

  $objectManager->get('TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface')->persistAll();

  return true;
}

将新条目插入数据库工作正常,但清除数据库根本不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:5)

由于removeAll()调用了findAll()

public function removeAll() {
        foreach ($this->findAll() AS $object) {
            $this->remove($object);
        }
    }

最有可能findAll()不返回任何对象。你有没有处理存储pid?禁用它或手动传递它。如果您从调度程序上下文中使用存储库的方法,那么它就不会存在。