gpt4 book ai didi

商店用品 6 : Extend existing core DAL entities with a reference

转载 作者:行者123 更新时间:2023-12-05 06:14:42 30 4
gpt4 key购买 nike

我正在尝试在 2 个现有实体 PropertyGroupCustomFieldSet 之间创建连接。用例无关紧要。

所以我创建了一个EntityExtension:

    public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new ManyToOneAssociationField('customFieldSet', 'custom_field_set', CustomFieldSetDefinition::class))
);
}

public function getDefinitionClass(): string
{
return PropertyGroupDefinition::class;
}

并覆盖管理组件以在加载实体时也包含此关联:

Component.override('sw-property-detail', {
methods: {
loadEntityData() {
this.isLoading = true;
const criteria = this.defaultCriteria;
criteria.addAssociation('customFieldSet', new Criteria(1, 500));

this.propertyRepository.get(this.groupId, Shopware.Context.api, criteria)
.then((currentGroup) => {
this.propertyGroup = currentGroup;
this.isLoading = false;
}).catch(() => {
this.isLoading = false;
});
}
}
});

(我试图重写 defaultCriteria 但没有成功,因为 this.$super 无法访问计算属性)。

但它一直说 FRAMEWORK__ASSOCIATION_NOT_FOUND。我调试了 EntityDefinition,似乎甚至没有加载此扩展。

我检查了我的 EntityExtension 是否加载到 Symfony 容器中,它确实加载了,但它似乎没有达到实体定义。

最佳答案

EntityExtension 似乎缺少在函数 extendFields 中添加一个 FkField:

public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new FkField('custom_field_set', 'customFieldSetId', CustomFieldSetDefinition::class)),
);
$collection->add(
(new ManyToOneAssociationField('customFieldSet', 'custom_field_set', CustomFieldSetDefinition::class))
);
}

必须为 FkField 添加一个新的 use 语句:

use Shopware\Core\Framework\DataAbstractionLayer\Field\FkField;

关于商店用品 6 : Extend existing core DAL entities with a reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62760327/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com