Über Admin API herausfinden wo Medien genutzt werden

Hallo zusammen,
im Backend gibt es bei den Detail Infos der Medien einen Unterpunkt „Wird verwendet in“. Dort wird z.B. aufgelistet welchen Produkten das Bild zugeordnet ist. An diese Daten würde ich gerne auch per Admin API kommen.
Mit den Dev Tools meines Browsers habe ich den Befehl analysiert der abgesetzt wird, wenn man die Detailansicht aufruft. Demnach handelt es sich um einen /api/search/media Aufruf mit der media id als Parameter. Ich kann in der Response aber nirgendswo die Info finden welchem Produkt das Medien Objekt nun zugeordnet ist.

Hat jemand eine Idee wie ich an diese Info per API komme oder übersehe ich in der Response irgendetwas?

Ja, du wirst sehr wahrscheinlich etwas übersehen. Das Backend ist API only. Alles was du im Backend siehst, das wird über die API abgerufen.

Deine Frage kann ich leider nicht konkret beantworten, ohne selbst nachzusehen.

1 Like

Danke, ich habe nochmal genauer nachgeschaut und eine Lösung gefunden. Es gibt zwei Arten von /api/search/media calls. Einmal der Call welcher nach allen Elementen im Media Ordner sucht und einen der beim anklicken eines Media Objects/Bildes nach Daten für genau dieses Objekt Fragt (mit gegebener id). Ich ging davon aus das erst bei letzterem dann auch Details wie zugeordnete Produkte angefragt werden. Es stellte sich aber raus, dass dies bereits bei ersterer Variante geschieht.
Um z.B. alle Produkte zu bekommen denen das Bild zugeordnet ist muss man dann die entsprechenden associations hinzufügen. Z.B.:

$post = array(
            'page'     => 1,
            'limit'    => 25,
            'total-count-mode' => 1,
            'associations' => array(
                'productMedia' => array(
                    'associations' => array(
                        'product' => array(
                            'total-count-mode' => 1,
                        ),
                    ),
                ),
            ),
        );

Das liefert dann alle Produkt Daten der Produkte zurück, welchen das Bild zugeordnet ist.

Mir würde allerdings schon die pure Anzahl reichen, höchstens noch die Produkt ID. Die ganzen anderen Daten benötige ich nicht. Weißt du zufällig wie man nur nach bestimmten Werten filtern kann?

Gibts in der API auch den Aggregate Filter? In Synfony/Shopware Core wird dies zum filtern genutzt. Ohne selbst nachzusehen kann ich leider keine weiteren Tipps geben :laughing:

Danke für deine Bemühungen. Ich habe einen Weg gefunden die Rückgabe einzuschränken via „includes“:

$post = array(
            'page'     => 0,
            'limit'    => 25
            'total-count-mode' => 1,
            'associations' => array(
                'productMedia' => array(
                ),
            ),
            'includes' => array(
                'product_media' => array('productId', 'mediaId'),
            )
        );

Jetzt bekomme ich nur noch die productMedia Daten und von diesen auch nur noch die zugehörige productId und mediaId (+ das Feld ‚apiAlias‘). Außerden habe ich bei den Associations die unter Association für die eigentlichen Produkt Daten entfernt.