提问人:Moss 提问时间:11/7/2023 更新时间:11/7/2023 访问量:26
与 Shopware6 实体定义中的 JSON 字段关联
Association with JSON field in Shopware6 entity definition
问:
我有一个以category_ids作为json字段的实体,我想添加一个与类别实体的关联以获取类别的名称 怎么做
这是我的实体定义,这个ManyToManyAssociationField不工作
protected function defineFields(): FieldCollection
{
return new FieldCollection([
(new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey()),
(new StringField('group_name','group_name')),
(new JsonField('category_ids', 'category_ids'))->addFlags(new Required()),
(new FkField('shipping_method_id', 'shipping_method_id', ShippingMethodDefinition::class))->addFlags(new Required()),
(new CreatedAtField()),
(new UpdatedAtField()),
(new ManyToOneAssociationField('shippingMethod', 'shipping_method_id', ShippingMethodDefinition::class)),
new ManyToManyAssociationField('category', CategoryDefinition::class, GroupDefinition::class, 'category_ids', 'id'),
]);
}
答:
0赞
Ezycod
11/7/2023
#1
ManyToMany 关联不适用于 ,为此您需要一个,因此需要一个额外的数据库表。
请查看文档JsonField
MappingEntityDefinition
如果你想坚持使用 JsonField,你可以添加一个带有标志的附加字段,并通过事件订阅者设置数据Runtime
1赞
j_elfering
11/7/2023
#2
通常不支持 JSON 字段中的关联。相反,您需要创建一个映射表和一个来处理关联。关于如何做到这一点,请查看文档。MappingEntityDefinition
如果出于某种原因(例如,在不对映射表进行表扫描的情况下提高查询性能),则还需要在 JSON 字段中添加关联实体的 ID,则可以添加一个额外的索引器和一个索引器来填充此字段。请看一下这里如何做到这一点。例如,从核心看一下 SalesChannelIndexer
,它填充了每个销售渠道的字段。ManyToManyIdField
paymentMethodIds
评论