[REST API] Kundengruppe ausschliessen über article PUT Call

Moin,

Ist es möglich über ein PUT call eine Kundengruppe bei einem Artikel auszuschliessen beim update?

Habe mir schon per GET call ein Artikel angeschaut wo ich im Backend es per Hand eingestellt habe und dann versucht den Array Baum nachzubauen.
Geregelt wird das über die [customerGroups] Attribute.

Folgendes Ergebniss bringt mich nicht zum Ziel.

[data] => Array
    (
        [id] => 1460
        [mainDetailId] => 1460
        [supplierId] => 1
        [taxId] => 1
        [filterGroupId] => 1
        [name] => XXX
        [added] => 2018-01-26T00:00:00+0100
        [active] => 1
        [pseudoSales] => 0
        [changed] => 2018-02-09T15:22:35+0100
        [lastStock] => 1
        [mode] => 0
        [mainDetail] => Array
            (
                [id] => 1460
                [articleId] => 1460
                [...] => ...
            )
        [customerGroups] => Array
            (
                [0] => Array
                    (
                         [customerGroupKey] => EK
                    )

            )
    )

 

Hallo RautenkinG,

in der Funktion getManyToManySubElement in der Api Resource Resource.php wird die Customer\Group Entity

nicht über den customerGroup Key ermittelt, 

sondern über die id. Der 4. optionale Parameter conditions legt das hier fest.

protected function getManyToManySubElement(Collection $collection, $data, $entityType, $conditions = array('id'))

Ändere Deinen array key, dann funktioniert es:

$articleResource = Shopware\Components\Api\Manager::getResource('article');
$params['customerGroups'][0]['id'] = 1;
$articleResource->update(1, $params);

 

1 „Gefällt mir“

@MrMDeluxe schrieb:

Hallo RautenkinG,

in der Funktion getManyToManySubElement in der Api Resource Resource.php wird die Customer\Group Entity

nicht über den customerGroup Key ermittelt, 

sondern über die id. Der 4. optionale Parameter conditions legt das hier fest.

protected function getManyToManySubElement(Collection $collection, $data, $entityType, $conditions = array(‚id‘))

Ändere Deinen array key, dann funktioniert es:

$articleResource = Shopware\Components\Api\Manager::getResource(‚article‘);
$params[‚customerGroups‘][0][‚id‘] = 1;
$articleResource->update(1, $params);

 

Ich habe mein Code jetzt so angepasst das ich folgendes Arry Konstrukt übergebe

   [...] => [...]
   [customerGroups] => Array
        (
            [0] => Array
                (
                    [id] => 1
                )

        )

)

Was immernoch nicht funktionieren will bei mir, da im backend nicht alle Artikel jetzt die Gruppe mit der ID = 1 ausgeschlossen hat.

jemand eine weitere idee?

Also irgendwie verstehe ich Dein Problem nicht.

Was meinst Du mit: 

@RautenkinG schrieb:

Was immernoch nicht funktionieren will bei mir, da im backend nicht alle Artikel jetzt die Gruppe mit der ID = 1 ausgeschlossen hat.

 

Via Put Request aktualisierst Du doch genau einen Artikel.

Was bedeutet in diesem Kontext denn „nicht alle Artikel“ ?