hatte mir in der Freitext-Verwaltung Freitexte mit folgender Konfiguration angelegt:
Spaltennamen: attr10
Spaltentyp: Checkbox
SQL-Datentyp: INT (1)
Ich nutze diese Checkbox um im Listing bei diesem Artikel ein Badge anzeigen zu lassen oder nicht.
Leider klappt das nicht mehr. Obwohl die Checkbox angehakt ist, wird das Badge im Listing nicht angezeigt. Was aber bisher immer klappte. Ich habe dann mal die Einträge in der Datenbank geprüft. Unter s_articles_attributes in der Datenbank wird die Spalte attr10 angezeigt. Bei dem betroffenen Artikel steht in der Spalte eine 1 (bei äteren Artikeln steht in der Spalte “true”!). Ändere ich jetzt den Eintrag in der Spalte attr10 von “1” auf “true” bei dem betroffenen Artikel, wird mir das Badge nach Shopcache leeren wieder angezeigt!?
Komischerweise wird in der Datenbank unter “Struktur” für attr10 unter “Typ” “mediumtext” angezeigt. Sollte das nicht “int(11)” sein? Denn so wurde das doch im Backend unter Freitextfeld-Verwaltung angelegt!? Und warum werden bei älteren oder nicht geänderten Artikel in der Datenbank in der Spalte attr10 “true” oder “false” angezeigt und bei den von mir geänderten oder neu angelegten Artikeln eine “1” oder “0”?
Wie kann das passieren und wie kann ich das wieder korrigieren? Shopware-Version 5.2.14
Wann wurde das denn geändert? Denn es betrifft auch andere Freitextfelder mit Checkbox…
Hallo,
seit Shopware 5.2 wird das so nicht mehr funktionieren, da ab da Checkboxfelder nur noch als int(1) abgespeichert werden, also als 0 (= false) und 1 (= true). Du müsstest also auf 0 oder 1 prüfen (und nicht auf einen String wie „true“ oder „1“).
Ich habe aber in der Datenbank in der Spalte attr10 noch Einträge mit „true / false“. Wenn ich nach Beidem abfrage klappt es aber. Es klappt aber auch so {if $sArticle.attr10}
Ich habe aber in der Datenbank in der Spalte attr10 noch Einträge mit „true / false“. Wenn ich nach Beidem abfrage klappt es aber. Es klappt aber auch so {if $sArticle.attr10}
Hallo,
dann hast du das attr10 noch nicht kompatibel zu Shopware 5.2 gemacht ;), wenn es ein Checkboxfeld ist, aber noch „true“ und „false“ hat.
Da steht das Feld drin! Ob es Änderungen annimmt, weiß ich jetzt nicht.
Ich stehe aber gerade auf dem Schlauch…warum muss ich die Kompatibilität anpassen? Ich bin User und kein Progi. Macht das Programm das nicht selber?
Grüße
Michael
Hallo,
also wenn dein Feld attr10 vom Typ int(1) ist, kann es gar keine Werte „true“ und „false“ beinhalten ;). Also ist das Feld ja kompatibel. Darum ging es bei der Sache doch nur. Hier reicht also die Prüfung auf == 1 aus.
also wenn dein Feld attr10 vom Typ int(1) ist, kann es gar keine Werte „true“ und „false“ beinhalten . Also ist das Feld ja kompatibel. Darum ging es bei der Sache doch nur. Hier reicht also die Prüfung auf == 1 aus.
Beste Grüße
Sebastian
Hallo Sebastian,
Michael hat aber noch alte Werte von vor der Umstellung drin und darum gibt es noch „true“ und „false“ Werte in der Datenbank. Wenn er nun einen älteren Artikel im Backend aufruft und speichert wurde er die neuen Werte 0 und 1 in die Tabelle speichern, will er aber nicht da es ja ein großer Aufwand wäre.
Mann könnte das ganze nun mit einem Sql-Befehl in MyPHP-Admin anpassen und „false“ mit 0 und „true“ mit 1 ersetzten, muss man aber nicht.