首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shopware 6 OneToMany关系

Shopware 6 OneToMany关系
EN

Stack Overflow用户
提问于 2020-09-27 01:13:58
回答 1查看 656关注 0票数 1

我将在Shopware6 .in中定义一个OneToMany关系,我的情况是,我将有一篇链接了许多标签的文章。我知道这些情况在Shopware中可能太复杂了,并且取决于很多东西。而且很难帮上忙。但是,如果向我介绍一个教程或代码示例,它会对我有所帮助

使用Ak文章\Core\Content\Tag\tagCollection;

我的ArticleEntity

代码语言:javascript
复制
class ArticleEntity extends Entity
{

    /**
     * @var TagCollection|null
     */
    protected $tag;
    protected $tagId;

public function getTagId(){ return $this->tagId; }
public function setTagId($value): void { $this->tagId = $value; }

public function getTag(): ?TagCollection
{
    return $this->tag;
}

public function setTag(TagCollection $tag): void
{
    $this->tag = $tag;
}
.
.
.
}

ArticleDefinition

代码语言:javascript
复制
<?php declare(strict_types=1);

namespace AkArticle\Core\Content\Article;

use Shopware\Core\Framework\DataAbstractionLayer\EntityDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\PrimaryKey;
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\Required;
use Shopware\Core\Framework\DataAbstractionLayer\Field\IdField;
use Shopware\Core\Framework\DataAbstractionLayer\Field\StringField;
use Shopware\Core\Framework\DataAbstractionLayer\Field\BoolField;
use Shopware\Core\Framework\DataAbstractionLayer\Field\TranslatedField;
use Shopware\Core\Framework\DataAbstractionLayer\FieldCollection;
use Shopware\Core\Framework\DataAbstractionLayer\Field\TranslationsAssociationField;
use AkArticle\Core\Content\Aggregate\ArticleTranslation\ArticleTranslationDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\Field\OneToManyAssociationField;
use AkTag\Core\Content\Tag\TagDefinition;

class ArticleDefinition extends EntityDefinition
{
    public const ENTITY_NAME = 'ak_artcle_plugin';
    public function getEntityName(): string
    {
        return self::ENTITY_NAME;
    }

    public function getEntityClass(): string
    {
        return ArticleEntity::class;
    }
    public function getCollectionClass(): string
    {
        return ArticleCollection::class;
    }

    protected function defineFields(): FieldCollection
    {
        return new FieldCollection([
            (new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey()),
            (new StringField('name', 'name'))->addFlags(new Required()),
            (new BoolField('active','active'))->addFlags(new Required()),
            (new TranslatedField('title')),
            new IdField('tagId', 'tagId'),

          new TranslationsAssociationField(ArticleTranslationDefinition::class, 'ak_article_plugin_id'),
            new OneToManyAssociationField('tag', TagDefinition::class, 'id'),

        ]);
    }
}

article-detals.html.twig

代码语言:javascript
复制
<sw-multi-select :label="$t('ak-article.detail.label.name-tag')" :options="tags"
                          v-model="article.tagId" >
 </sw-multi-select>

在提交之后,我得到这个错误

代码语言:javascript
复制
{"0":{"code":"FRAMEWORK__WRITE_CONSTRAINT_VIOLATION","status":"400","detail":"This value should be of type string.","template":"This value should be of type string.","meta":{"parameters":[]},"source":{"pointer":"/0/tagId"}}}

我的错误是什么?.I试图找到一个解决方案,但是找不到.I试图找到的任何东西,一些接近我的情况的代码示例,但我没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 17:36:53

您需要的是文章和标签实体之间的多对多关联。因此,您需要创建一个MappingDefinition,这将在docs中详细说明。

要在管理中显示该关联,可以使用sw-entity-many-to-many-select

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64080503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档