TYPO3 TCA类型“选择”性能问题

时间:2017-07-25 14:08:22

标签: typo3 typo3-extensions typo3-tca

是否有可能对包含数千个条目的表使用TCA字段类型“select”?

不应显示带有条目的选择框(否则记录会加载分钟或者您会收到内存限制或最大执行时间错误),但是类似于搜索字段(如现有向导“建议”)或记录浏览器(如TCA类型“组”)。

4 个答案:

答案 0 :(得分:1)

可以使用TCA类型" group"和(非常重要!)设置foreign_table:

'config' => [
    'type' => 'group',
    'internal_type' => 'db',
    'allowed' => 'fe_users',
    'foreign_table' => 'fe_users'
],

从官方文档(https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Group.html#foreign-table):

  

foreign_table:组属性字段实际上不存在此属性。它需要作为Extbase限制的变通方法。它用于解析Extbase持久性期间的依赖关系。它应该与允许的属性保持相同的值。请注意,此处只允许使用一个表名,与允许的属性相反。

答案 1 :(得分:0)

查找groupinternal_type设为db,以替代select类型;这正是你需要的。这是允许特定用例的唯一字段类型。

备选方案包括为字段使用input类型并使用向导进行拟合,然后配置向导以替换原始字段,仅显示向导。

请勿忘记检查您列出的表格的SQL密钥。如果您的列表使用未索引的列,则可以通过简单地为您使用的列添加SQL索引来将时间减少到极端程度。

答案 2 :(得分:0)

我正在使用旧的TCA字段类型'group',这也解决了TYPO3 CMS 8中的这种行为

'my_select_field' => [
    'label' => 'My select field',
    'config' => [
        'type' => 'group',
        'internal_type' => 'db',
        'allowed' => 'my_foreign_table_name',
        'size' => 1,
        'minitems' => 0,
        'maxitems' => 1,
        'suggestOptions' => [
            'default' => [
                'pidList' => 0,
                'searchCondition' => 'hidden=0',
                'searchWholePhrase' => 1
            ]
        ]
    ]
]

答案 3 :(得分:0)

一种选择是将字段设置为“只读”。当然,然后人们无法在TYPO3 BE中编辑此字段,但是如果数据即将到来,例如从外部来源,这是我可以忍受的缺点。

'config' => [
    'type' => 'select',
    'foreign_table' => 'fe_users',
    'size' => 1,
    'minitems' => 1,
    'maxitems' => 2, // it has to be > 1 because else a selectbox is rendered
    'readOnly' => 1, // readOnly because of performance issues
],