Alte API - Eigenschaften importieren

Hallo, mit der alten API konnte man früher so Eigenschaften importieren: self::$api-\>sArticleAttributeGroup(array( "ordernumber"=\>'SW123', "attributegroupID"=\>10, "values"=\> array( 1=\>'test') )); Das geht jetzt nicht mehr. Es wird auch eine attributeoptionID erwartet. Nun habe ich es so versucht: self::$api-\>sArticleAttributeGroup(array( "ordernumber"=\>'SW123', "attributegroupID"=\>10, "attributeoptionID"=\> 3, "values"=\> array( 1=\>'test') )); Leider ohne Erfolg. Kann mit Shopware :shopware: bitte sagen wie es geht. Oder evtl. weiß es ja ein anderer…

Niemand eine Idee?

Hallo ottscho, ich habe dasselbe Problem :(, ich kann nicht die Eigenschaften importieren, ich habe den folgenden Struktur benutzen: $arr_attribute_all=Array([articleID] => 1 [attributegroupID] => 2 [values] => Array ( [value] => azul ) [attributeoptionID] => 10) $arr_result=$api->sArticleAttributeGroup($arr_attribute_all); Das Ergebnis ist: dass die Artikel 1 in Verbindung mit den Gruppe 2 ist, aber die Eigenschaften haben keine Wert. haben Sie eine Losung gefunden? im Voraus vielen Dank Diana

Hallo, anbei unser Weg. $filter = array ( array("option"=\>"Brand Status", "value"=\>$feld['HerstellerText']), array("option"=\>"Second Quality", "value"=\>$feld['DA']), array("option"=\>"Demontage", "value"=\>$feld['DEM']), array("option"=\>"XL/RF", "value"=\>$feld['XL']) ); $articleId=Shopware()-\>Modules()-\>Articles()-\>sGetArticleIdByOrderNumber($feld['ArtikelNr']); foreach ($filter as $item) { $valueID = 0; $exist = 0; $dbOptionId=Shopware()-\>Db()-\>fetchOne("SELECT id FROM s\_filter\_options WHERE name='{$item[option]}'"); $optionValue = $item['value']; if ($optionValue) { self::$api-\>sArticleAttributeGroup( array( 'ordernumber'=\>$feld['ArtikelNr'], 'attributegroupID' =\> 11, 'attributeoptionID' =\> $dbOptionId, 'values' =\> array( $optionValue ) )); } } foreach ($filter as $item) { $valueID = 0; $exist = 0; $dbOptionId=Shopware()-\>Db()-\>fetchOne("SELECT id FROM s\_filter\_options WHERE name='{$item[option]}'"); $optionValue = $item['value']; if ($optionValue) { $valueID = Shopware()-\>Db()-\>fetchOne("SELECT id FROM s\_filter\_values WHERE value='" . $optionValue . "'"); $exist=Shopware()-\>Db()-\>fetchOne("SELECT count(\*) As Test FROM s\_filter\_articles WHERE articleID=" . $articleId . " and valueID=" . $valueID); if ($exist == 0) { $exec = Shopware()-\>Db()-\>exec("INSERT INTO s\_filter\_articles (articleID, valueID) VALUES (" . $articleId . ", " . $valueID .")"); } } }

Dankeschön!!! es hat funktioniert!!! :slight_smile: :slight_smile: :slight_smile:

Hi, wenn man sich die Funktion “sArticleAttributeGroup” des API Plugins mal genauer anschaut muss man auch feststellen das das nicht so laufen kann wie bei der 3.5x. API. Es kommt rüber wie eine Mischung aus alter API und neuer REST-API. Von einer Abwärtskompatibilität kann man hier nicht wirklich sprechen. Zum einen wird eine neue ID benötigt zum anderen frisst er die Values nichtmehr so wie er das früher gemacht hat. Der vorgestellte Code mit der foreach funktioniert sicherlich der Ansatz einen Kompatibilitätslayer zu schaffen ist allerdings eigentlich ein anderer. Wenn man nun seine Importfunktionen eh umbauen muss dann kann man sie auch gleich auf die REST-API aufsetzen. Hier würde das ganze etwa so aussehen (grobes Beispiel): $articleResource = \Shopware\Components\Api\Manager::getResource('Article'); $params = array( 'filterGroupId' =\> $propGroupID[0], 'propertyValues' =\> array( array( 'option' =\> array('name' =\> 'Farbe'), 'value' =\> 'rot' ), array( 'option' =\> array('name' =\> 'Farbe'), 'value' =\> 'orange' ) ... ); ); $articleResource-\>update($result['articleID'], $params); Vielleicht hilft das irgendwem mal weiter. Viele Grüße

[quote] Wenn man nun seine Importfunktionen eh umbauen muss dann kann man sie auch gleich auf die REST-API aufsetzen. [/quote] Da gebe ich dir recht. Aber nicht bei den derzeitigen Performance-Problemen was die REST API betrifft. Daher kann ich bei vielen Artikeln immer noch die alte API empfehlen.

1 „Gefällt mir“

sorry für die Unannehmlichkeiten :slight_smile: , aber ich habe eine Frage: haben Sie geschäft die ganze Artikel mit den alte API zum importieren? ich habe ungefähr 8000 artikel und die API kann nur maximal 25 Artikel importieren dann kam den folgenden Fehler: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error. More information about this error may be available in the server error log. Im Voraus vielen Dank

Hi, wir importieren ca. 40.000 Artikel auf diese Weise. Aber nicht in einem Scriptaufruf. Wir habe eine Schleife und importieren in jedem Vorgang z.B. 100 Artikel. Dein Fehler weißt auf ein Script-Timeout des Servers hin. Evtl. lässt sich dies höher setzen.

Hi, @Ottscho vielen Dank für diesen Hinweis. Nicht nur die Performance auch die äusserst dokumentation sprechen gegen den Einsatz der REST-API. Ich habe selbst nochnicht viel mit ihr zu tun gehabt stoße aber ständig auf Probleme und eben Punkte welche einfach nicht dokumentiert sind. s. zB meinen anderen Post bzgl dem Import von Attributwerten bei Varianten. Also alles in allem noch eine große Baustelle.