Produkte nach Eigenschaft sortieren

Ich versuche zurzeit eine Sortierung nach einer selbsterstellen Eigenschaft zu realisieren. Dazu habe ich zunächst zum Testen direkt in die Datenbank folgendes Eingetragen.

UPDATE product_sorting
SET fields = '[{"field": "product.name", "order": "desc", "priority": 1, "naturalSorting": 0}]'
WHERE url_key = 'Test-desc';

UPDATE product_sorting
SET fields = '[{"field": "product.name", "order": "asc", "priority": 1, "naturalSorting": 0}]'
WHERE url_key = 'Test-asc';

Dazu die entsprechenden Übersetzungen in product_sorting_translation. Die vernachlässige ich hier mal. Das funktionierte soweit auch. Jetzt möchte ich allerdings nicht nach product.name sondern nach einer selbst erstellten Eigenschaft diameter sortieren. Was muss ich dafür als field angeben? Ich habe schon diverse Dinge ausprobiert, konnte aber zu keiner Lösung kommen.

Gute Frage, Zusatzfelder werden als JSON-Notation in der translated-Tabelle gespeichert, was den Zugriff darauf schwieriger macht. Bin nicht sicher, ob das unterstützt wird. Theoretisch sollte es gehen.

JSON_EXTRACT(product_translated.custom_fields, '$.custom_irgendeingruppenname_diameter')

Je nach Menge der Artikel ist das auch sehr schlecht für die Ladezeit, weil jeder Datensatz angefasst werden muss und kein Index verwendet werden kann.

Danke für deine Antwort. Aber greifst du da nicht auf Zusatzfelder zu? Ich würde gerne auf eine Eigenschaft zugreifen und die sortieren. Ich hatte bisher mäßigen Erfolg mit "field": "properties.name". Dann funktioniert die Sortierung. Allerdings nur sofern das Produkt nur eine Eigenschaft hat. Gibt es eine Möglichkeit die irgendwie zu filtern? Außerdem ist es mir gelungen, durch einen dump() in src/Core/Framework/DataAbstractionLayer/Dbal/EntityDefinitionQueryHelper.php getFieldAccessor auf fields die möglichen Felder herauszufinden. Das Objekt sieht so aus. Hast du eine Idee, wie man sonst noch an die eine Eigenschaft kommt?

Hast Recht, Gedankenfehler. Da muss ich nochmal drauf rumdenken, wie man das mit mehreren Eigenschaften macht. Kann sein, das da die reine Sortierung nicht reicht und man die Abfrage erweitern müsste.