Der Shopware-API-Import funktionierte nicht wie erwartet.

Hallo, ich habe etwas PHP-Code geschrieben, um Daten von CSV in die Datenbank zu importieren, indem ich die Shopware-API benutzte. Ich habe 2 Kategoriengruppen - Farbe und Größe (mit Konfigurator-Set Typ 2). Wenn ich die Daten von csv vervollständigt und importiert habe, funktioniert alles gut, aber der Konfigurator hat Größe eingestellt, die auch das Bild anzeigt. 

Bitte sehen Sie sich das Bild an 

Mein geschriebenes PHP-Skript wie folgt. Was verpasse ich?

 

foreach ($articlesArray as $key => $variantItem) {
            $article = ;
            $colors = ;
            $colorNames = ;
            $sizes = ;
            $sizeNames = ;
            $variants = ;
            $images = ;
            $imageNames = ;
            $configurationSetOptionsColour = ;
            $configurationSetOptionsSize = ;
            foreach ($variantItem as $item) {
                $articleName = $item[3];
                $article[‚name‘] = $articleName;
                $article[‚categories‘] = [
                    [‚id‘ => 1]
                ];

                $colourCode = $item[5];
                if (!in_array($colourCode, $colorNames)) {
                    array_push($colors, [‚name‘ => $colourCode]);
                    array_push($colorNames, $colourCode);
                    $configurationSetOptionsColour = [‚name‘ => $colourCode];
                }

                if (!in_array($item[7], $sizeNames)) {
                    array_push($sizes, [‚name‘ => $item[7]]);
                    array_push($sizeNames, $item[7]);
                    $configurationSetOptionsSize = [‚name‘ => $item[7]];
                }

                if (!in_array($item[11], $imageNames)) {
                    $imageNames = $item[11];
                    $images = ;
                        $images = [
                            ‚link‘ => $this->base->publicPath . ‚/‘ . $item[11],
                            ‚options‘ => [
                                [
                                    [
                                        ‚name‘ => $colourCode,
                                    ]
                                ]
                            ]
                        ];
                    }

                $variant = ;
                $variant[‚number‘] = $item[1] . ‚-‘ . $item[8];

                $configurationSet = [
                    ‚name‘ => „Test set“,
                    ‚type‘  =>  2,
                    ‚groups‘ => [
                        [
                            ‚name‘ => ‚Farbe‘,
                            ‚options‘ => $configurationSetOptionsColour
                        ],
                        [
                            ‚name‘ => ‚Größe‘,
                            ‚options‘ => $configurationSetOptionsSize
                        ]
                    ]
                ];
                $variant[‚configuratorOptions‘] = [
                    [‚group‘ => ‚Farbe‘, ‚option‘ => $colourCode],
                    [‚group‘ => ‚Größe‘, ‚option‘ => $item[7]]
                ];
                if(count($images) > 0)  {
                    $variant[‚images‘] = $images;
                }
                $variants = $variant;
            }

            $variants[0][‚isMain‘] = true;
            $mainDetail = $variants[0];
            unset($mainDetail[‚configuratorOptions‘]);
            $article[‚mainDetail‘] = $mainDetail;
            array_splice($variants, 0, 1);
            $article[‚configuratorSet‘] = $configurationSet;

            $this->apiClient->post(‚articles‘, $article);
        }

Irgendeine Idee davon?

Hallo @nightfox‍,

Ihre Code ist richtig , gibt keine Probleme.

das liegt mit Shopware Core. Sie haben 3 Möglichkeiten:

1- upgrade zu letzt version , sie haben ein neue Logic für option media hinzufügen.

2- ob nicht funktionert anpassen das Template an :

überprüfen ob die Groupe ist Größe , dann überschreiben das wert $option.media = ‚‘ .

3- schreiben ein plugin um die Option structer zu überschreiben :

überprüfen ob die Groupe ist Größe , dann überschreiben das wert $data[‚media‘] = ‚‘ .

 

VG,

Ahmad

Hi @ahmadsaad‍,

Vielen Dank für Ihre Antwort.
Ich bin mir nicht sicher, welche erste Option Sie gegeben haben. Ich werde es überprüfen und dir antworten, wenn ich frei bin. :slight_smile:
Der Shop läuft bereits und ich kann das Thema nicht mehr ändern.
Ich dachte auch darüber nach, deine dritte Option zu machen. Da es sich um eine sofortige Anforderung handelte und ich nur 2 Monate Erfahrung in Shopware habe, habe ich mich nicht dafür entschieden.

Ich habe das Problem behoben, indem ich Einträge aus der Tabelle s_article_img_mapping_rules entfernt habe, die eine Option_id entsprechend der Option ids der configuration_group ‘Größe’ haben. 

vola, für mich hat alles gut funktioniert. Ich füge meine Anfrage bei. Ich hoffe, jemand wird es hilfreich finden. 

[delete](https://dev.mysql.com/doc/refman/5.7/en/delete.html) from [s\_article\_img\_mapping\_rules](http://localhost/adminer/?username=root&db=shopware&table=s_article_img_mapping_rules) where option\_id [in](https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_in) ([select](https://dev.mysql.com/doc/refman/5.7/en/select.html) id from [s\_article\_configurator\_options](http://localhost/adminer/?username=root&db=shopware&table=s_article_configurator_options) where group\_id = ([select](https://dev.mysql.com/doc/refman/5.7/en/select.html) id from [s\_article\_configurator\_groups](http://localhost/adminer/?username=root&db=shopware&table=s_article_configurator_groups) where name = 'Größe'));

(Ich empfehle demütigst, die Löschanfrage nicht im stage/live shop auszuführen, bevor Sie sie in Ihrer sicheren Umgebung überprüfen. )

Ich danke dir.