Neue Kategorien über Repository eintragen, aber in richtiger Reihenfolge

Hallo,

ich möchte Kategorien mittels Repository anlegen.

Ich nutze dazu folgende Funktion:

public function createCategory($name, $parentId, $afterCategoryId): string
    {
        $categoryId = Uuid::randomHex();
        $this->categoryRepository->create([
            'id' => $categoryId,
            'name' => $name,
            'parentId' => $parentId,
            'afterCategoryId' => $afterCategoryId
        ], $this->context);

        return ($categoryId);
    }

Nach der Ausführung sind die Kategorien/Unterkategorien im Shop verfügbar.

Allerdings stimmt die Reihenfolge nicht. Wenn ich die Kategorien wieder auslese, stehen die afterCategoryIds zwar korrekt im Datensatz, werden aber offenbar bei der Anzeige ignoriert.

Wenn ich im Backend die Reihenfolge via Drag & Drop ändere, werden m.E. auch nur die UUID’s in afterCategoryId geändert. Aber es funktioniert. Gibt es noch etwas Anderes, was Einfluss auf die Reihenfolge hat, bzw. was man beachten muss?

Möglicherweise triggert die Änderung in der Administration das leeren des Cache. Das wird im Core definitiv nicht erfolgen. Das schon einmal getestet.

Ansonsten ist der Ansatz mit afterCategoryId definitiv korrekt.

Ich habe den Cache gelöscht, sogar die Administration neu gestartet. Leider führte das alles nicht zum Erfolg.

Die Verweise in afterCategoryId werden einfach ignoriert. Ich habe leider nicht herausbekommen, was der Administrator anders macht, obwohl ich im Browser den Netzwerkverkehr belauscht habe :thinking:. Was könnte man noch probieren?

Das Einzige, was ich mir erklären könnte ist, dass du falsche UUIDs verwendest und Shopware deswegen die Reihenfolge falsch setzt.

in einem früheren Post hattest Du das Thema scheinbar schonmal am Wickel:

Was spielt versionId bzw. afterCategoryVersionId eigentlich für eine Rolle?

Ich habe es nochmal angeschaut. Die UUIDs sind definitiv nicht falsch. Ich stehe gerade total auf dem Schlauch :thinking:.

Ich habe die letzte Kategorie „Bla“ via Code angelegt und Ihr afterCategoryId: „0193b98b858771b2bce2dec8ddb8db62“ mitgegeben. Dadurch müsste sie eigentlich unter „Home“ (erste Kategorie) eingeordnet werden. Sie steht aber ganz unten, an letzter Stelle.

Wenn ich im Backend „Bla“ mit Drag & Drop, unter „Home“ verschiebe, steht in den UUID’s nichts anderes drin, zumindest sehe ich keinen Unterschied?

Verwechsle nicht nach und untergeordnet.

Nicht ganz sicher was die Administration macht, aber ggf. musst du alle anderen betroffenen Kategorien mit ändern. Es kann gut sein, dass Test ebenfalls die gleiche afterCategoryId wie Bla hat.

Danke. Das ist ganz schön tricky. Muss ich wohl noch einiges an Zeit investieren, um das hinzubekommen :face_with_bags_under_eyes:.