typo3 - Typo3 为 CommandController 命令定义 storagePid
问题描述
我想使用 CommandController(调度程序)导入不同的数据。我已经发现可以设置一个全局 storagePid 如下:
module.tx_myextension.persistence.storagePid = 123
来源:https ://worksonmymachine.org/blog/commandcontroller-and-storagepid
这很好,但我的扩展包含多个模型,应该保存在不同的 Pid 上
我还发现了一篇旧帖子,有人说可以为每个模型定义一个 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 并应用存储 pid:
$querySettings = $this->domain1Repository->createQuery()->getQuerySettings();
$querySettings->setStoragePageIds([$domain1Pid]);
$this->domain1Repository->setDefaultQuerySettings($querySettings);
对每个存储库重复此操作。在调度程序作业设置或 cli 中,您现在可以为每个存储定义 pid。
顺便说一句:您还可以使用$domain->setPid(123)
设置每个模型的 pid 保存位置。
推荐阅读
- java - 用java打印数字序列
- solidity - 执行时抛出的映射数组
- python - 在 Pytest 中,如何从命令行更新非测试文件中的 url
- javascript - 如何等待从 API 调用中检索到值。在开始我的代码之前
- arrays - 循环通过一组满足特定属性的序列,而不存储它们
- agora.io - Agora 直播双摄像头
- c - 通过写/读任意内存来利用
- javascript - 使用 JavaScript 在加载时在所有屏幕中排序和分发 SVG 对象
- android-studio - 找不到 ADB Android Studio,颤抖
- c++ - 所有 C++ 运算符都采用操作数吗?