Hallo,
ich erhalte täglich eine .xml-Datei mit neuen Lagerbeständen und möchte diese in Shopify aktualisieren. Meine bisherigen Integrationen (PHP, cURL, kein Framework) basierten auf der REST-API. Durch Shopify-Updates wurde diese Integration immer mehr zum Problem wegen Limitierungen, Zeit Beschränkungen, Performance und der Menge an Anfragen.
Deshalb möchte ich gerne eine neue Integration mit GraphQL erstellen, die performanter ist und sich besser für das gleichzeitige Aktualisieren mehrerer Lagerbestände eignet.
Aktuell frage ich einzeln für jede SKU per GraphQL die Varianten-ID und die Inventory-Item-ID ab. Dann habe ich versucht die Mutation Query zu erstellen damit der Lagerstand geupdatet wird, dies klappt leider nicht.
→ könnten Sie mir bitte ein einfaches Beispiel geben, mit dem ich den Lagerbestand aktualisieren kann? (PHP, cURL)
→ welche Mutation eignet sich am besten für die Massenaktualisierung?
Ich habe jetzt eine Mischung aus Dr Google, unsere API Foren, und unsere Entwickler Doku durchforstet und um Lagerbestände in Shopify mithilfe von GraphQL und PHP mit cURL zu aktualisieren, kann man sicherlich effizienter als die REST-API, insbesondere für Massenaktualisierungen, arbeiten.
Du kannst beispiewelsiese die Lagerbestände aktualisieren, mit der inventoryItemId und locationId. Diese kann man mit einer GraphQL-Abfrage abrufen:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://
Sobald man die IDs hat, die `inventoryBulkAdjustQuantityAtLocation` Mutation verwenden, um die Lagerbestände zu aktualisieren. Hie ein Beispiel in PHP:
```markup
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://
Das zeigt, wie man die Lagerbestände in großen Mengen mit der `inventoryBulkAdjustQuantityAtLocation` Mutation anpassen kann. Passe die `inventoryItemId` und `locationId` Werte nach Bedarf an.
Für weitere Beispiele die _**[Shopify GraphQL Admin API Doku](https://shopify.dev/api/admin-graphql)**_ durchgehen...(_**[Shopify Community](https://community.shopify.com/post/1292050)**_) (_**[Shopify Community](https://community.shopify.com/post/1507852)**_) ([_**Shopify Community**_](https://community.shopify.com/post/1694094)) (_**[DEV Community](https://dev.to/fatihsamur/bulk-product-upload-on-shopify-using-graphql-admin-api-with-php-33ki)**_) (_**[Shopify Community](https://community.shopify.com/post/1533473)**_).
Hoffe das hilft dir weiter - lass wissen falls nicht! :wink:
---
Warum nicht etwas __*Gamification*__ in das Shop einbauen, um deinen Kunden etwas __*Fun*__ im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!
Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. __*Halte bitte Ausschau in deiner E-Mail*__ auf Notifications zu Antworten auf deine Fragen in der Community.
vielen Dank für die schnelle Rückmeldung.
Das Beispiel funktioniert und ändert den Lagerstand, jedoch wird dieser nur um die aktuelle Anzahl + dem angegebenen Wert erhört. (availableDelta)
→ versuche mit der Mutation diesen zu einem Fix Wert zu setzen und ergänze meine Antwort hier sobald gelöst.
Anmerkung:
Bei mir ist der Call immer fehlgeschlagen da die neuste API Version die Mutation nicht unterstützt. (2024-04).
Habe auf Version 2024-01 umgestellt, somit klappt der Call.
Super somit bist du ein Schritt weiter! Probiere mal folgendes:
Um deine Lagerbestände in Shopify effizient über GraphQL und PHP mit cURL zu aktualisieren, hier ist ein Beispiel, das dir zeigt, wie du dies mit der neuen Mutation inventoryBulkAdjustQuantitiesAtLocation durchführen kannst. Diese Mutation ermöglicht dir das gleichzeitige Anpassen von Beständen für mehrere Artikel an einem bestimmten Standort. Zuerst musst du die inventoryItemId und die locationId abrufen. Du kannst dies mit einer GraphQL-Abfrage tun:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://
Verwende die Mutation `inventoryBulkAdjustQuantitiesAtLocation`, um die Lagerbestände zu aktualisieren. Hier ist ein Beispiel:
```markup
$curl = curl_init();
$inventoryAdjustments = array(
array("inventoryItemId" => "gid://shopify/InventoryItem/1234567890", "availableDelta" => 10),
array("inventoryItemId" => "gid://shopify/InventoryItem/0987654321", "availableDelta" => -5)
);
$data = array(
"query" => "mutation BulkInventoryAdjust($invItemAdjustments: [InventoryAdjustItemInput!]!, $locationId: ID!) {
inventoryBulkAdjustQuantityAtLocation(inventoryItemAdjustments: $invItemAdjustments, locationId: $locationId) {
inventoryLevels {
id
available
item {
id
sku
}
location {
id
name
}
}
userErrors {
field
message
}
}
}",
"variables" => array(
"invItemAdjustments" => $inventoryAdjustments,
"locationId" => "gid://shopify/Location/1234567890"
)
);
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://
1. **Abrufen der Inventory Item IDs und Location IDs**:
- Mit der ersten GraphQL-Abfrage holst du die `inventoryItemId`s der Produktvarianten.
1. **Aktualisieren der Lagerbestände**:
- Mit der `inventoryBulkAdjustQuantityAtLocation` Mutation kannst du mehrere Lagerbestände in einem einzigen API-Aufruf anpassen.
- Passe die `inventoryItemId` und `availableDelta` entsprechend an.
### Hinweis:- **API-Versionen**: Stelle sicher, dass du die korrekte API-Version verwendest, da neuere Versionen möglicherweise bestimmte Mutationen nicht mehr unterstützen. In diesem Beispiel wurde die Version `2024-01` verwendet.
- **Fehlermeldungen**: Überprüfe immer die `userErrors` in der Antwort, um sicherzustellen, dass keine Fehler aufgetreten sind.
Hoffe das hilft dir weiter - lass wissen falls nicht! :wink: