Produkte aus SalesChannelProductRepository

Hallo,

in einem Controller ermittle ich die Daten eines Produktes, bezogen auf den aktuellen SalesChannel:

$salesChannelProductRepository = $this->container->get('sales_channel.product.repository');
$criteria = (new Criteria())->addFilter(new EqualsFilter('product.id', $productId));
$criteria->addAssociation('crossSellings.assignedProducts.product');
$salesChannelProduct = $salesChannelProductRepository->search($criteria, $context)->first();

Konkret benötige ich sämtliche Cross Selling Produkte für das Produkt mit $productId.

Durch $criteria->addAssociation('crossSellings.assignedProducts.product'); bekomme ich die auch. Mein Problem ist aber, dass ich nur die Cross Selling Produkte haben möchte, die im aktuellen SalesChannel ($context) sichtbar sind. Kann man dies direkt filtern?

Viele Grüße, Frank

Hallo,

ich habe die Lösung gefunden. Falls es mal jemand benötigt, man kann die Assoziationen filtern. In meinem Fall folgendermaßen:

$criteria->getAssociation('crossSellings.assignedProducts')->addFilter(
    new EqualsFilter('product.visibilities.salesChannelId', $context->getSalesChannel()->getId())
);

Es werden dadurch nur die Cross Selling Produkte angehangen, die im aktuellen SalesChannel sichtbar sind.

Viele Grüße, Frank