微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Shopware 6 OneToMany关系

如何解决Shopware 6 OneToMany关系

我将在Shopware 6中定义一个OnetoMany关系。以我为例,我将要撰写一篇与许多标签链接文章。 我了解这些情况在Shopware中可能太复杂了,并且取决于很多事情。很难帮助。 但是,如果向我介绍一个教程或代码示例,它将对我有帮助

使用AkArticle \ Core \ Content \ Tag \ tagCollection;

我的ArticleEntity

Slug

ArticleDeFinition

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;
}
.
.
.
}

article-detals.html.twig

<?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'),]);
    }
}

enter image description here

提交后,我收到此错误

<sw-multi-select :label="$t('ak-article.detail.label.name-tag')" :options="tags"
                          v-model="article.tagId" >
 </sw-multi-select>

我怎么了?我试图找到一个解决方案,但什么也找不到。我试图找到一些与我的情况相近的代码示例,但是我没有成功。

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。