# Adding one-to-many relationship in admin frontend

**URL:** <https://forum.shopware.com/t/adding-one-to-many-relationship-in-admin-frontend/66411>\
**Category:** Programming (EN)\
**Created:** [21. April 2020 um 15:11 UTC](https://forum.shopware.com/t/adding-one-to-many-relationship-in-admin-frontend/66411 "2020-04-21T15:11:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![sznvs](https://avatars.discourse-cdn.com/v4/letter/s/43a26b/32.png) [@sznvs](https://forum.shopware.com/u/sznvs)\
**Post date:** [21. April 2020 um 15:11 UTC](https://forum.shopware.com/t/adding-one-to-many-relationship-in-admin-frontend/66411/1 "2020-04-21T15:11:00Z")

</div>

Hello, I am trying to create a one-to-many relation between a Customer and a custom entity (Company).

One company can have multiple customers.

I created a new entity in `MyPlugin/scr/Core/Content/Company`:

```
name;
    }

    /**
     * @param string $name
     */
    public function setName(string $name): void
    {
        $this->name = $name;
    }

    /**
     * @return CustomerCollection
     */
    public function getCustomers(): CustomerCollection
    {
        return $this->customers;
    }

    /**
     * @param CustomerCollection $customers
     */
    public function setCustomers(CustomerCollection $customers): void
    {
        $this->customers = $customers;
    }

}

```

I also created a `CompanyCollection.php` in the same folder:

I created a `CompanyDefinition.php` in the same folder:

```
     */
    protected function defineFields(): FieldCollection
    {
        return new FieldCollection(
            [
                (new IdField('id', 'id'))->addFlags(new PrimaryKey(), new Required()),
                (new StringField('name', 'name'))->addFlags(new Required()),
                new OneToManyAssociationField('customers', CustomerDefinition::class, 'company_id'),
            ]
        );
    }
}

```

In `MyPlugin\MyPlugin\Core\Checkout\Customer` I created a `CustomerExtension.php`:

```
add(
            (new ManyToOneAssociationField(
                'company',
                'company_id',
                CompanyDefinition::class,
                'id'
            ))
        );
    }

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

```

I created two migrations, the first one `MyPlugin/scr/Migration`:

```
executeQuery($query);
    }

    public function updateDestructive(Connection $connection): void
    {
    }
}

```

And the customer extension migration:

```
updateInheritance($connection, 'customer', 'company_id');
    }

    public function updateDestructive(Connection $connection): void
    {
    }
}

```

This creates the neccesary database tables, and as far as I can tell this works fine.

Now I want to create a relation in the admin panel. I created a new section in the admin panel by creating a file in `MyPlugin/src/Resources/admin/src/main.js`:

```
import './page/company-list';
import './page/company-detail';

Shopware.Module.register('my-plugin-company', {
    type: 'plugin',
    name: 'Custom',
    title: 'Debtors',
    description: 'Module to configure Companies in Shopware',
    color: '#f12091',
    icon: 'default-building-home',

    routes: {
        list: {
            component: 'company-list',
            path: 'list'
        },
        detail: {
            component: 'company-detail',
            path: 'detail/:id',
            meta: {
                parentPath: 'my.plugin.company.list'
            }
        }
    },

    navigation: [{
        label: 'Companies',
        color: '#f12091',
        path: 'my.plugin.company.list',
        icon: 'default-building-home',
        position: -4
    }]
});

```

I want to have a multisearch box on the company detail page, but nothing I tried seems to work. Here is my `index.js` for the company detail page:

```
import template from './company-detail.html.twig';

const {Criteria} = Shopware.Data;

Shopware.Component.register('company-detail', {
    template,

    inject: [
        'repositoryFactory'
    ],

    metaInfo() {
        return {
            title: this.$createTitle()
        };
    },

    data() {
        return {
            company: null,
            repository: null,
        };
    },

    created() {
        this.repository = this.repositoryFactory.create('my_plugin_company');
        this.getCompany();
    },

    computed: {
        customerColumns() {
            return [
                {
                    property: 'lastName',
                    label: this.$tc('sw-customer.detailAddresses.columnLastName')
                }, {
                    property: 'firstName',
                    label: this.$tc('sw-customer.detailAddresses.columnFirstName')
                }
            ]
        }
    },

    methods: {
        getCompany() {
            this.repository
                .get(this.$route.params.id, Shopware.Context.api)
                .then((entity) => {
                    this.company = entity;
                });
        }
    }
});

```

And my template:

```
{% block my_plugin_company_detail %}
    
        
                
                    Customers

```

Now this doesnt work. Extra info i didnt include to prevent making this post any longer:

- I added my custom definitions in my services.xml

- I created the /public/administration/js/my-plugin.js file and the corresponding view, and rebuild all assets

Please tell me what I have to do to create a one to many relation in the admin panel. I want to be able to select a customer from the company detail page, and create a relation between the entities. Thanks!

---

<div class="post-metadata">

**Author:** ![NacScha](https://avatars.discourse-cdn.com/v4/letter/n/3bc359/32.png) [@NacScha](https://forum.shopware.com/u/NacScha)\
**Post date:** [6. September 2023 um 13:42 UTC](https://forum.shopware.com/t/adding-one-to-many-relationship-in-admin-frontend/66411/2 "2023-09-06T13:42:02Z")

</div>

@sznvs did you found a solution for this ?

I am stuck with the problem to create/update associated data from the administration
