TYPO3 DatabaseQueryProcessor:相同 UID 的多个输出

Posted

技术标签:

【中文标题】TYPO3 DatabaseQueryProcessor:相同 UID 的多个输出【英文标题】:TYPO3 DatabaseQueryProcessor: Multiple Outputs of same UIDs 【发布时间】:2021-04-05 08:53:36 【问题描述】:

我正在尝试使用 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, "title": "Barlow Tyrie", "pid": 1, "t3ver_state": 0  ,
   "data":  "uid": 16, "title": "Dedon", "pid": 1, "t3ver_state": 0  ,
   "data":  "uid": 17, "title": "Manutti", "pid": 1, "t3ver_state": 0  ,
   "data":  "uid": 17, "title": "Manutti", "pid": 1, "t3ver_state": 0  ,
   "data":  "uid": 19, "title": "Extremis", "pid": 1, "t3ver_state": 0  
]

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

【问题讨论】:

正常情况下,当您对 MM 表使用类似的连接时。 【参考方案1】:

一般而言,您可以使用两种不同的选项来限制这样的查询结果:

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

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

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

    通过在 TypoScript 中将结果与 groupBy 分组:groupBy = sys_category.uid

关于这两种方法的一般解释可以在here找到,该解释仅与MySQL有关,与TypoScript无关。

此外,您可以向连接添加更多约束,这样就不需要上述选项了。

【讨论】:

我可以确认,带有selectFields = DISTINCT sys_category.uid,sys_category.title 的选项1 将起作用。 groupBy 不是必需的。 非常感谢,两个选项都有效,我坚持使用选项一!

以上是关于TYPO3 DatabaseQueryProcessor:相同 UID 的多个输出的主要内容,如果未能解决你的问题,请参考以下文章

哪个 TYPO3 版本支持啥 PHP 版本?

新用户角色typo3 neos

如何在 Typo3 版本 10 ($GLOBALS['TYPO3_DB']->sql_query()) 中执行普通 SQL?

TYPO3 表格:无法验证 HMAC

从TYPO3后端突然退出(TYPO3 CMS 8.5.1)

TYPO3 - 禁用扩展缓存