У меня есть следующая модель: "Полка" и "Книга", находящиеся в соотношении 1:n.
Также есть задача планировщика (расширение "планировщик" 6.2.0) анализ книг и их удаление. Задача планировщика делится на два класса: сама задача и ее бизнес-логика.
Задача:
namespace Vendor\MyExt\Scheduler;
class MultiStepProcessTask extends \TYPO3\CMS\Scheduler\Task\AbstractTask {
public function execute() {
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$businessLogic = $objectManager->get(\Vendor\MyExt\Scheduler\MultiStepProcessTaskBusinessLogic::class);
return $businessLogic->run();
}
}
Бизнес-логика:
namespace Vendor\MyExt\Scheduler;
class MultiStepProcessTaskBusinessLogic {
public function run() {
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$shelvesRepository = $objectManager->get('Vendor\\MyExt\\Domain\\Repository\\ShelvesRepository');
$shelf = $shelvesRepository->findOneByLastFinishedTaskNumber(0);
$book = $shelf->getBooks()->current();
....
$shelf->removeBook($book);
$shelvesRepository->update($shelf);
return 1;
}
}
Если звонят с моего добавочного - все ок: книга удалена. Чтобы проверить это, я поместил эти строки в действие списка одного контроллера:
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
$businessLogic = $objectManager->get(\Vendor\MyExt\Scheduler\MultiStepProcessTaskBusinessLogic::class);
$businessLogic->run();
При вызове из планировщика (как задача) книга не удаляется! Репозиторий создан, полка извлечена, книга извлечена. Но $shelf->removeBook($book);
вообще никак не влияет. Может кто-нибудь объяснить мне, почему?
Я использую TYPO3 версии 6.2.19.