Data Feed Modules

BETA version
This module is still in development. For questions and inquiries please contact academy@spryker.com

DataFeed module helps to query abstract products, categories, prices, availability data and related information for exporting or processing. The data Feed is not dependent on collectors. Every DataFeed module has an API to get a query. With the query you can use pagination, limits, add columns, query one row or all and more.

ProductAbstract DataFeed Module

The ProductAbstract DataFeed module has a query container with queryAbstractProductDataFeed() function that returns Orm\Zed\Product\Persistence\SpyProductAbstractQuery. By default, abstract product localized attributes are joined.

Use Generated\Shared\Transfer\ProductAbstractDataFeedTransfer for query settings. Required only when you need an extra join or filters. ProductAbstractDataFeedTransfer contains the following fields:

  • joinPrice
  • joinCategory
  • joinImage
  • joinProduct
  • joinOption
  • updatedFrom
  • updatedTo
  • idLocale

You can filter data using updatedFrom, updatedTo, idLocale options.

  • joinImage - set true to join images data for abstract products.
  • joinCategory - set true to join categories data.
  • joinPrice - set true to join prices data.
  • joinProduct - set true to join concrete products data with localized attributes, concrete product images and product stock.
  • joinOption - set true to join product options data.

Installation

Run:

composer require spryker/product-abstract-data-feed

Usage

Add to your dependency container

<?php
...

use Spryker\Zed\ProductAbstractDataFeed\Persistence\ProductAbstractDataFeedQueryContainer;

const PRODUCT_ABSTRACT_DATA_FEED = 'PRODUCT_ABSTRACT_DATA_FEED';

...

    public function providePersistenceLayerDependencies(Container $container)
    {
        $container[self::PRODUCT_ABSTRACT_DATA_FEED] = function (Container $container) {
            return $container->getLocator()
                ->productAbstractDataFeed()
                ->queryContainer();
    };

...

Add to your module persistence factory

<?php
...

public function getProductAbstractDataFeedQueryContainer()
{
    return $this->getProvidedDependency(YourBundleDependencyProvider::PRODUCT_ABSTRACT_DATA_FEED);
}

...

Query example

<?php
...

public function getAllAbstractProducts()
{
    $productAbstractQueryContainer = $this->getFactory()
        ->getProductAbstractDataFeedQueryContainer();
    $productAbstractDataFeedTransfer = new ProductAbstractDataFeedTransfer();

    $productAbstractDataFeedTransfer->setIdLocale(46);
    $productAbstractDataFeedTransfer->setJoinImage(true);

    $query = $productAbstractQueryContainer->queryAbstractProductDataFeed($productAbstractDataFeedTransfer);

    return $query->find()
        ->toArray();   
}

...

Availability DataFeed Module

The Availability DataFeed Module has a query container with a queryAvailabilityDataFeed() function that returns Orm\Zed\Product\Persistence\SpyProductAbstractQuery. By default, stock, product, product localized attributes and abstract product localized attributes are joined.

Use Generated\Shared\Transfer\AvailabilityDataFeedTransferfor query settings. The Transfer object and idLocale are required. AvailabilityDataFeedTransfer contains the following fields:

  • updatedFrom
  • updatedTo
  • idLocale You can filter data using updatedFrom, updatedTo, idLocale options.

Installation

Run:

composer require spryker/availability-data-feed

Usage

Add to your dependency container

<?php
...

use Spryker\Zed\AvailabilityDataFeed\Persistence\AvailabilityDataFeedQueryContainer;

const AVAILABILITY_DATA_FEED = 'AVAILABILITY_DATA_FEED';

...

    public function providePersistenceLayerDependencies(Container $container)
    {
        $container[self::AVAILABILITY_DATA_FEED] = function (Container $container) {
            return $container->getLocator()
                ->availabilityDataFeed()
                ->queryContainer();
    };

...

Add to your Module persistence factory

<?php
...

public function getAvailabilityDataFeedQueryContainer()
{
    return $this->getProvidedDependency(YourBundleDependencyProvider::AVAILABILITY_DATA_FEED);
}

...

Query example

<?php
...

public function getProductsAvailability()
{
    $availabilityQueryContainer = $this->getFactory()
        ->getAvailabilityDataFeedQueryContainer();
    $availabilityDataFeedTransfer = new AvailabilityDataFeedTransfer();
    $availabilityDataFeedTransfer->setIdLocale(46);

    $query = $availabilityQueryContainer->queryAvailabilityDataFeed($availabilityDataFeedTransfer);
        
    return $query->find()
        ->toArray();
}

...

Category DataFeed Module

The Category DataFeed module has a query container with a queryCategoryDataFeed() function that returns Orm\Zed\Category\Persistence\SpyCategoryQuery. By default category attributes and category nodes are joined.

Use Generated\Shared\Transfer\CategoryDataFeedTransfer for query settings. The transfer object and idLocale are required.

CategoryDataFeedTransfer contains the following fields:

  • joinAbstractProduct
  • updatedFrom
  • updatedTo
  • idLocale You can filter data using updatedFrom, updatedTo, idLocale options.

joinAbstractProduct - set true to join abstract product and localized attributes.

Installation

Run:

composer require spryker/category-data-feed

Usage

Add to your dependency container:

<?php
...

Use Spryker\Zed\CategoryDataFeed\Persistence\CategoryDataFeedQueryContainer;

const CATEGORY_DATA_FEED = 'CATEGORY_DATA_FEED';

...

    public function providePersistenceLayerDependencies(Container $container)
    {
        $container[self::CATEGORY_DATA_FEED] = function (Container $container) {
            return $container->getLocator()
                ->categoryDataFeed()
                ->queryContainer();
    };

...

Add to your module persistence factory

<?php
...

public function getCategoryDataFeedQueryContainer()
{
    return $this->getProvidedDependency(YourBundleDependencyProvider::CATEGORY_DATA_FEED);
}

...

Query example

<?php
...

public function getAllCategories()
{
    $categoryDataFeedQueryContainer = $this->getFactory()
        ->getCategoryDataFeedQueryContainer();
    $categoryDataFeedTransfer = new CategoryDataFeedTransfer();
    $categoryDataFeedTransfer->setIdLocale(46);

    $query = $categoryDataFeedQueryContainer->queryCategoryDataFeed($categoryDataFeedTransfer);

    return $query->find()
        ->toArray();
}

...

Price DataFeed Module

The Price DataFeed module has a query container with the queryPriceDataFeed() function that returns Orm\Zed\Price\Persistence\SpyPriceProductQuery.

Use Generated\Shared\Transfer\PriceDataFeedTransfer for query settings.

PriceDataFeedTransfer contains the following field:

  • joinPriceType

joinPriceType - set true to join price type data.

Installation

Run:

ccomposer require spryker/price-data-feed

Usage

Add to your dependency container

<?php
...

Use Spryker\Zed\CategoryDataFeed\Persistence\CategoryDataFeedQueryContainer;

const PRICE_DATA_FEED = 'PRICE_DATA_FEED';

...

    public function providePersistenceLayerDependencies(Container $container)
    {
        $container[self::PRICE_DATA_FEED] = function (Container $container) {
            return $container->getLocator()
                ->priceDataFeed()
                ->queryContainer();
    };

...

Add to your module persistence factory

<?php
...

public function getPriceDataFeedQueryContainer()
{
    return $this->getProvidedDependency(YourBundleDependencyProvider::PRICE_DATA_FEED);
}

...

Query example

<?php
...

public function getAllPrices()
{
    $priceDataFeedQueryContainer = $this->getFactory()
        ->getPriceDataFeedQueryContainer();
    $priceDataFeedTransfer = new PriceDataFeedTransfer();
    $priceDataFeedTransfer->setJoinPriceType(true);

    $query = $priceDataFeedQueryContainer->queryPriceDataFeed($priceDataFeedTransfer);
        
    return $query->find()
        ->toArray();
}

...