Dieser Fehler tritt häufig auf, wenn Daten über ein repository gespeichert werden sollen. Wenn die upsert, update oder create Methode des repositories verwendet wird, wird ein verschachteltes Array erwartet.

Nehmen wir folgenden Code als Beispiel:

$data = [
    'id' => 'abcd123...',
    'name' => 'Beispiel Name'
];
$productRepository->update($data, $context);

Dieser Code würde den Fehler Expected input to be non empty non associative array verursachen.

Die Lösung:

$data = [
    'id' => 'abcd123...',
    'name' => 'Beispiel Name'
];
$productRepository->update([$data], $context);

oder

$data = [
    [
        'id' => 'abcd123...',
        'name' => 'Beispiel Name'
    ]
];
$productRepository->update($data, $context);

Der Grund, wieso ein verschachteltes Array übergeben muss, ist recht simpel: Es können mehrere Entities auf einmal übergeben/bearbeitet werden. Wenn kein verschachteltes Array erwartet werden würde, müsste für jede Entity ein eigenständiger Aufruf gemacht werden.