微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TYPO3 DatabaseQueryProcessor:相同 UID 的多个输出

如何解决TYPO3 DatabaseQueryProcessor:相同 UID 的多个输出

我正在尝试使用 DatabaseQueryProcessor 获取某些类别(在 pid 1 上),它几乎完美运行,但某些类别在变量的输出显示多次。

(我使用的是无头错字3 10:https://github.com/TYPO3-Initiatives/headless

brandcategories = JSON
brandcategories {
    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor
        10 {
            as = brandcategories
            selectFields = sys_category.uid,sys_category.title
            table = sys_category
            pidInList = 1
            where = parent=13
            where.insertData = 1
            join = sys_category_record_mm on sys_category_record_mm.uid_local = 
            sys_category.uid
        }
    }
}

这给了我以下输出

 [
  { "data": { "uid": 14,"title": "Barlow Tyrie","pid": 1,"t3ver_state": 0 } },{ "data": { "uid": 14,{ "data": { "uid": 16,"title": "Dedon",{ "data": { "uid": 17,"title": "Manutti",{ "data": { "uid": 19,"title": "Extremis","t3ver_state": 0 } }
]

如您所见,uid 14 显示了两次,以及 Manutti。 如果有人能告诉我如何过滤它,那就太好了,所以我只得到一次每个 ID。谢谢!

解决方法

通常,您可以使用两个不同的选项来限制这样的查询结果:

  1. 通过使用 mysql-Expression DISTINCT,我没有经验,但如果它可以在像 selectFields = DISTINCT sys_category.uid,sys_category.title 这样的 TypoScript 中使用。
    this page 上写

    不支持 DISTINCT,必须使用 ->groupBy() 代替。

    我不确定这是否也适用于您的 TypoScript 问题。

  2. 通过在 TypoScript 中使用 groupBy 对结果进行分组:
    groupBy = sys_category.uid

关于这两种方法的一般说明可以在here找到,说明只与MySQL有关,与TypoScript无关。

此外,您可以向联接添加更多约束,以便不需要上述选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。