# CustomFields setzen

**URL:** <https://forum.shopware.com/t/customfields-setzen/68094>\
**Category:** Programmierung\
**Created:** [2. Juli 2020 um 15:46 UTC](https://forum.shopware.com/t/customfields-setzen/68094 "2020-07-02T15:46:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [2. Juli 2020 um 15:46 UTC](https://forum.shopware.com/t/customfields-setzen/68094/1 "2020-07-02T15:46:16Z")

</div>

```
$customer = $scope->getSalesChannelContext()->getCustomer();
$customer->setCustomFields(['feldname' => 'meinwert']);

```

Moin moin,  
in einer Rule Extension rufe ich aus dem SalesContext den Customer auf und lese die CustomFields aus mittels getCustomFields. Die ermittelten Werte möchte ich nun bei Bedarf überschreiben.

Es gibt die Methode setCustomFields, welche allerdings die Daten nicht speichert. Wie kann ich die Daten speichern?

&nbsp;

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [3. Juli 2020 um 07:44 UTC](https://forum.shopware.com/t/customfields-setzen/68094/2 "2020-07-03T07:44:55Z")

</div>

Mit `setCustomFields` änderst du ja nur die Variable im Frontend. Um Änderungen in der Datenbank vorzunehmen, musst du über die Repositories gehen:

```
$this->container->get('customer.repository')
    ->upsert([[
        'id' => $scope->getSalesChannelContext()->getCustomer()->getId(),
        'customFields' => ['feldname' => 'mein Wert']
    ]], $context);

```

(ungetestet)

---

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [3. Juli 2020 um 07:55 UTC](https://forum.shopware.com/t/customfields-setzen/68094/3 "2020-07-03T07:55:17Z")

</div>

ah, ok. Aber da kommt wieder das Problem das ich aus einer CustomRule nicht auf den Container zurückgreifen kann. Ein DI über die service.xml funktioniert leider auch nicht, da Eigenschaften nach dem \_\_construct auf NULL zurück gesetzt werden. Aktuell bin ich da ein bisschen ratlos…

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [3. Juli 2020 um 08:08 UTC](https://forum.shopware.com/t/customfields-setzen/68094/4 "2020-07-03T08:08:29Z")

</div>

Das Repo direkt mitgeben funktioniert nicht?

&nbsp;

---

<div class="post-metadata">

**Author:** ![oerkel](https://avatars.discourse-cdn.com/v4/letter/o/a9adbd/32.png) [@oerkel](https://forum.shopware.com/u/oerkel)\
**Post date:** [3. Juli 2020 um 08:14 UTC](https://forum.shopware.com/t/customfields-setzen/68094/5 "2020-07-03T08:14:06Z")

</div>

Die Übergabe schon. Allerdings „verliert“ die Klasse nach dem \_\_construct die Eigenschaften wieder.

Da gab es vor ein paar Tagen ein passendes Ticket zu [Shopware Issuetracker](https://issues.shopware.com/issues/NEXT-9347)

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [3. Juli 2020 um 08:27 UTC](https://forum.shopware.com/t/customfields-setzen/68094/6 "2020-07-03T08:27:12Z")

</div>

Status: Gathering Interest

Heißt auf Deutsch, die haben keinen Bock das umzusetzen wie bei 99% der Tickets.

Mir fällt jetzt aber auch nix ein wie man das lösen kann.
