Reading and Writing Stock
Overview
Shopware stores the current stock level alongside the product, this guide will help you when you want to read and write that value.
Reading Stock
The product.stock
field should be used to read the current stock level. When building extensions that need to query a product's stock, use this field. It is always a real-time calculated value of the available product stock.
php
// <plugin root>/src/Swag/Example/ServiceReadingData.php
<?php declare(strict_types=1);
namespace Swag\Example\Service;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
class ReadingStock
{
private EntityRepository $productRepository;
public function __construct(EntityRepository $productRepository)
{
$this->productRepository = $productRepository;
}
public function read(Context $context): void
{
$product = $this->productRepository
->search(new Criteria([$productId]), $context)
->first();
$stock = $product->getStock();
}
}
Writing Stock
The product.stock
field should be used to write the current stock level.
php
// <plugin root>/src/Swag/Example/ServiceReadingData.php
<?php declare(strict_types=1);
namespace Swag\Example\Service;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\Context;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
class WritingStock
{
private EntityRepository $productRepository;
public function __construct(EntityRepository $productRepository)
{
$this->productRepository = $productRepository;
}
public function write(string $productId, int $stock, Context $context): void
{
$this->productRepository->update(
[
[
'id' => $productId,
'stock' => $stock
]
],
$context
);
}
}