Typo3 为 CommandController 命令定义 storagePid

Typo3 Define storagePid for CommandController command

我想使用 CommandController(调度程序)导入不同的数据。 我已经发现可以设置一个全局 storagePid,例如:

module.tx_myextension.persistence.storagePid = 123

来源:https://worksonmymachine.org/blog/commandcontroller-and-storagepid

效果很好,但我的扩展包含多个模型,应该保存在不同的 Pid 上

我还发现了一个旧的 post,其中有人说可以为每个模型定义一个 pid,这正是我所需要的:

module.tx_myextension.persistence.classes.tx_myextension_domain_model_player.storagePid = 124
module.tx_myextension.persistence.classes.tx_myextension_domain_model_customer.storagePid = 125

来源:https://typo3-german.typo3.narkive.com/WxjjtxXa/scheduler-storage-pid

但这行似乎被忽略了。这是正确的方法还是我做错了什么?

我在 TYPO3 6.2.44

我建议为控制器操作创建参数。对于每个模型一个存储 pid。

所以你有myCommand($domain1Pid, $domain2Pid,$domain3Pid, ...)

现在,作为函数中的第一次调用,您将获得存储库的 querySettings 并应用存储 pids:

$querySettings = $this->domain1Repository->createQuery()->getQuerySettings();
$querySettings->setStoragePageIds([$domain1Pid]);
$this->domain1Repository->setDefaultQuerySettings($querySettings);

对每个存储库重复此操作。在调度程序作业设置或 cli 中,您现在可以为每个存储定义 pids。

顺便说一句:您还可以使用 $domain->setPid(123) 设置每个模型的 pid 保存位置。