【问题标题】:TYPO3 extbase: Customize 1:1 relation queryTYPO3 extbase:自定义 1:1 关系查询
【发布时间】:2021-09-13 07:31:49
【问题描述】:

我想通过添加 extbase 域模型来修改现有的 TYPO3 扩展,同时保留现有的数据库结构。

有两个数据库表:locationperson,它们没有直接连接——旧代码只是通过它们的pid 列关联它们。如果您想将location 用于person,则必须选择具有相同pidlocation

现在我希望能够从人员的域模型类中加载位置,但 extbase 无法弄清楚如何自动加载它。

我必须做些什么来覆盖/自定义 extbase 的关系加载行为,以便我可以通过 $person.location 访问 location 对象,同时受益于 extbase 的自动缓存和预加载?

(当自己在Person类中实现getLocation()时,extbase不会在第一个SQL查询中自动加载位置。另外,我必须自己实现本地缓存,这样重复访问getLocation()就不会导致重复的数据库访问。)

【问题讨论】:

    标签: typo3 extbase


    【解决方案1】:

    如果您不能自己更改扩展,我会选择使用 https://extensions.typo3.org/extension/extender 并添加额外的属性 + getter。

    此外,您需要扩展 TCA 以让编辑者在后端选择关系。

    【讨论】:

    • 我可以更改扩展名;它是自己的代码。但我的问题是如何在不修改数据库结构的情况下覆盖 extbase 关系加载过程?
    • Xclass \TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::mapSingleRow 并修改 $row[location] 或更新所有记录并正确设置 TCA 中的位置
    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多