shopware_attribute.crud_service

Bisher habe ich attribute im Plugin folgendermaaßen erweitert:

$this->get('models')->addAttribute(
            's_articles_attributes',
            'md',
            'MYFIELD',
            'TINYINT(1)'
        );

 

Damit ich aber dieses im Backend sichtbar machen will, muss ich auf den shopware_attribute.crud_service zurückgreifen:

 

$service = Shopware()->Container()->get('shopware_attribute.crud_service');

 $service->update(
            's_articles_attributes',
            'MYFIELD',
            'TINYINT(1)',
            [
                'label' => 'Labeltext',
                'helpText' => 'Helptext',
                'translatable' => false,
                'displayInBackend' => true,
                'position' => 0,
             ]
        );

 

Nun ist es hier egal, ob ich hier IN(1), TINYINT(1) etc als $unifiedType eingebe. Nach dem Setzen wird der SQL-Datentyp immer auf varchar(500) gesetzt, Finde ich nicht so berauschend.

Ich brauche hier für eine Checkbox nur 0 und 1

Mit addAttribute funktioniert es prima

 

Hallo,

so wie du es (ab Shopware 5.2) machst ist es aber auch nicht Sinn der Sache bzw. Shopware- konform, siehe: Attribute system . Am besten liest du dir dazu mal die Dokumentation von Shopware durch. Shopware hat eigene Datentypen für fast alle Bereiche “entwickelt” - die soll man auch nutzen. In deinem Fall: boolean.

Beste Grüße 

Sebastian

Hatte ich auch versucht gehabt. Resultat war das selbe. SQL type ist danach immer varchar(500).

@megadruck schrieb:

Habe ich auch versucht

Hallo,

alle „neuen“ Datentypen funktionieren ab Shopware 5.2 auf jeden Fall problemlos  Wink. Varchar(500) wird sicher der „Fallback“ sein, wenn man einen nicht bekannten Datentypen versucht zu nutzen.

Beste Grüße

Sebastian 

Ich habe den Grund gefunden.

 

Ich hatte beim testen das Feld noch mit removeAttribute entfernt anstelle Delete vom Crud Service. Somit konnte es nicht korrekt entfernt werden und hatte den Datentyp nicht überschrieben.