当使用 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 查询。
我在我的 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 查询。