如何从Shopware 6中的产品流ID中获得产品?

问题描述

我试图创建一个自定义命令,在其中我想利用Shopware 6的动态产品组功能来提取与特定产品组(也就是产品流)中的过滤器匹配的产品。

我这样做是为了最初获取流,但是我对如何应用过滤器获取产品一无所知。

i = 1    
number_store = []   
while i<10:   
       number_store.append(i)   
       if len(number_store) ==4:    
       del number_store[0]   
       print(number_store)    
       i +=1

我试图获取 $streamCriteria = new Criteria($productStreamIds); $streamCriteria->addAssociation('productCrossSellings'); $streamCriteria->addAssociation('productExports'); $streamCriteria->addAssociation('filters'); $streams = $this->streamRepository->search($streamCriteria,$context)->getEntities(); /** @var ProductStreamEntity $stream */ foreach ($streams as $stream) { foreach ($stream->getFilters() as $filter) { $productCriteria->addAggregation($filter); // DOES NOT WORK $productCriteria->addFilter($filter); // DOES NOT WORK EITHER } } ,该数组为我提供了应用于产品流的一系列过滤器,但是由于预期类型不同,它不能直接应用于filters

这是我得到的过滤器阵列:

criteria->addFilter()

Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterCollection^ {#10304 #elements: array:5 [ "2c6a8a44d9c544f2812024f6414d56f9" => Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterEntity^ {#11014 #type: "multi" #field: null #operator: "OR" #value: null #productStreamId: "160274948d684a73afad0bde6aee19e8" #parentId: null #productStream: null #queries: null #parent: null #position: 0 #parameters: null #customFields: null #_uniqueIdentifier: "2c6a8a44d9c544f2812024f6414d56f9" #versionId: null #translated: [] #createdAt: DateTimeImmutable @1600069477 {#3113 date: 2020-09-14 07:44:37.521 UTC (+00:00) } #updatedAt: null #_entityName: "product_stream_filter" #extensions: array:1 [ "foreignKeys" => Shopware\Core\Framework\Struct\ArrayStruct^ {#11007 #data: [] #apiAlias: null #extensions: [] } ] #id: "2c6a8a44d9c544f2812024f6414d56f9" } "6dff7581e91a477ea2eca564a099eb90" => Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterEntity^ {#10832 #type: "range" #field: "width" #operator: null #value: null #productStreamId: "160274948d684a73afad0bde6aee19e8" #parentId: "2c6a8a44d9c544f2812024f6414d56f9" #productStream: null #queries: null #parent: null #position: 1 #parameters: array:1 [ "lte" => 749 ] #customFields: null #_uniqueIdentifier: "6dff7581e91a477ea2eca564a099eb90" #versionId: null #translated: [] #createdAt: DateTimeImmutable @1600069477 {#2958 date: 2020-09-14 07:44:37.523 UTC (+00:00) } #updatedAt: null #_entityName: "product_stream_filter" #extensions: array:1 [ "foreignKeys" => Shopware\Core\Framework\Struct\ArrayStruct^ {#10871 #data: [] #apiAlias: null #extensions: [] } ] #id: "6dff7581e91a477ea2eca564a099eb90" } "754b78c4ec74492bb96dc724f3e7ba6a" => Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterEntity^ {#10766 #type: "range" #field: "weight" #operator: null #value: null #productStreamId: "160274948d684a73afad0bde6aee19e8" #parentId: "2c6a8a44d9c544f2812024f6414d56f9" #productStream: null #queries: null #parent: null #position: 2 #parameters: array:1 [ "gte" => 293 ] #customFields: null #_uniqueIdentifier: "754b78c4ec74492bb96dc724f3e7ba6a" #versionId: null #translated: [] #createdAt: DateTimeImmutable @1600069477 {#10274 date: 2020-09-14 07:44:37.525 UTC (+00:00) } #updatedAt: null #_entityName: "product_stream_filter" #extensions: array:1 [ "foreignKeys" => Shopware\Core\Framework\Struct\ArrayStruct^ {#10774 #data: [] #apiAlias: null #extensions: [] } ] #id: "754b78c4ec74492bb96dc724f3e7ba6a" } "86d2c2bd8df14f8684c8f4c801e5a19a" => Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterEntity^ {#10272 #type: "range" #field: "height" #operator: null #value: null #productStreamId: "160274948d684a73afad0bde6aee19e8" #parentId: "2c6a8a44d9c544f2812024f6414d56f9" #productStream: null #queries: null #parent: null #position: 3 #parameters: array:1 [ "gte" => 746 ] #customFields: null #_uniqueIdentifier: "86d2c2bd8df14f8684c8f4c801e5a19a" #versionId: null #translated: [] #createdAt: DateTimeImmutable @1600069477 {#10313 date: 2020-09-14 07:44:37.526 UTC (+00:00) } #updatedAt: null #_entityName: "product_stream_filter" #extensions: array:1 [ "foreignKeys" => Shopware\Core\Framework\Struct\ArrayStruct^ {#11009 #data: [] #apiAlias: null #extensions: [] } ] #id: "86d2c2bd8df14f8684c8f4c801e5a19a" } "9b763069551244179dbc1f285290b673" => Shopware\Core\Content\ProductStream\Aggregate\ProductStreamFilter\ProductStreamFilterEntity^ {#10283 #type: "equalsAny" #field: "id" #operator: null #value: "c01c974a89eb4f17ab78c48251864eb7|5c0e5bc5f03d42a6980c11bf8ab67428" #productStreamId: "160274948d684a73afad0bde6aee19e8" #parentId: "2c6a8a44d9c544f2812024f6414d56f9" #productStream: null #queries: null #parent: null #position: 0 #parameters: null #customFields: null #_uniqueIdentifier: "9b763069551244179dbc1f285290b673" #versionId: null #translated: [] #createdAt: DateTimeImmutable @1600069477 {#12983 date: 2020-09-14 07:44:37.522 UTC (+00:00) } #updatedAt: null #_entityName: "product_stream_filter" #extensions: array:1 [ "foreignKeys" => Shopware\Core\Framework\Struct\ArrayStruct^ {#10356 #data: [] #apiAlias: null #extensions: [] } ] #id: "9b763069551244179dbc1f285290b673" } ] #extensions: [] } productCrossSellings的关联也都返回了productExports(尽管我不知道这些变量的用途是什么,但我认为也许是在内部以某种方式使用了它们)以获得该组的相关产品。

所以我的问题是,我们如何获得与产品组中的过滤器匹配的产品?

解决方法

您可以检查\Shopware\Core\Content\ProductStream\Service\ProductStreamBuilder 以及如何在\Shopware\Core\Content\Product\SalesChannel\CrossSelling\SalesChannelCrossSellingController::loadProductsForCrossSelling

中使用

我希望这会有所帮助。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...