ich habe per Plugin ein Attribut in s_user_attributes erstellt. Datentyp ist INT, per default soll der Wert 0 sein. Das funktioniert auch soweit wenn das Plugin installiert wird, für alle Kunden die sich danach registrieren ist die Spalte allerdings NULL anstatt 0. NULL sollte auch erlaubt sein, aber halt nicht als Standard.
public function install(InstallContext $context)
{
// ...
$attributeCrudService = $container->get('shopware_attribute.crud_service');
$attributeCrudService->update(
's_user_attributes', // table
'my_attribute', // column name
TypeMapping::TYPE_INTEGER, // type
[], // data
null, // new column name
true, // update depending tables
0 // default value
);
// ...
}
Das Datenbankschema sieht korrekt aus. Wenn ich einen Datensatz manuell per SQL anlege ohne das Atrribut anzugeben wird auch der korrekte Wert gesetzt.
DESC s_user_attributes;
+-----------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| userID | int(11) | YES | UNI | NULL | |
| my_attribute | int(11) | YES | | 0 | |
+-----------------------+---------+------+-----+---------+----------------+
Okay, vielen Dank für die Info. Ich bin davon ausgegangen weil es a) in der s_attribute_configuration eine Spalte „default_value“ gibt deren Sinn ich dann jetzt nicht mehr erkenne und b) irgendwie logisch ist.
Ich setze den Initialwert jetzt selber wie von @wabAB vorgeschlagen. Klappt gut.
Okay, vielen Dank für die Info. Ich bin davon ausgegangen weil es a) in der s_attribute_configuration eine Spalte „default_value“ gibt deren Sinn ich dann jetzt nicht mehr erkenne und b) irgendwie logisch ist.
Leider macht nicht immer alles Sinn. Shopware ist ein gewachsenes Produkt. Sowas passert. Wenn du Stelle im Code gefunden hast, mach doch gerne einen Pull Request. Andere Nutzer würden sich dann auch sehr freuen. Ich glaube wenn du den Kunden im Backend bearbeitest oder anlegst, dann würde es auch wie gewünscht greifen.