当使用 TCA select multiple => 1 流体中只有一个项目可用

When using TCA select multiple => 1 only one item is available in fluid

我在我的 TCA 中使用 select 我的物品 table 并激活了“多个”选项,这样我就可以 select 多次使用相同的物品:

'config' => [
            'type' => 'select',
            'renderType' => 'selectMultipleSideBySide',
            'foreign_table' => 'tx_extension_domain_model_item',
            'default' => 0,
            'size' => 10,
            'multiple' => 1,
            'autoSizeMax' => 30,
            'maxitems' => 9999,
            'fieldControl' => [
                'editPopup' => [
                    'disabled' => false,
                ],
                'addRecord' => [
                    'disabled' => false,
                ],
                'listModule' => [
                    'disabled' => true,
                ],
            ],
        ],

效果很好,并正确保存在数据库中,如 1,1,2,2,3,3,4,4。但 Fluid 仅输出项目 1、2、3、4。似乎默认过滤了多个项目。有什么选项可以禁用这个过滤器吗?

虽然我不完全确定原因,但所描述的用例确实表明改进的结构也许是正确的解决方案。与其 select 对产品进行 X 次指示“已使用 X 次”,并允许将此值作为 CSV 存储在数据库中,我建议:

  • 添加中间实体,例如 ProductUsage
  • ProductUsage 构建实体模型以包含计数字段,例如used_count
  • 并使其包含两个 1:1 关系字段,一个用于 parent_product,一个用于 child_product
  • 通过两种方式将 Product 模型与 ProductUsage 相关联:
    • 从父产品,Product->uses 可以包含 ProductUsage 个实例的列表,其中产品是 parent_product
    • 从子产品中,Product->usedBy 可以包含 ProductUsage 个实例的列表,其中产品是 child_product

此结构还有一个好处,您可以稍后通过将使用类型表达为 属性 在 ProductUsage 对象上。这也意味着您以后可以连接具有不同“类型”用途的产品(产品 A“连接到”产品 B 的 3 和“需要”产品 B 的 1)。依此类推,随着“用法”实际是什么的特异性越来越高。

并且您可以 select 所有 ProductUsage 条记录来表达关系图(您的所有产品如何连接的图表)。

但更重要的是,它是一种标准化的关系形式,而不是具有允许重复的 CSV 值,并且它 SQL 友好,允许您 select 键值(使用次数) 使用 JOIN 查询。