Can anyone tell me how to get the product collection from the below method.
Is this the right way of fetching data in magento2?
\Vendor\Module\Helper\Data $tglssearchHelper,
protected function _getProductCollection()
{
$tagalys = $this->tglssearchHelper->getTagalysSearchData();
if ($tagalys == false) {
return parent::_getProductCollection();
} else {
$searchResult = $tagalys;
if (empty($searchResult)) {
return parent::_getProductCollection();
}
$collection = $this->_productCollection = $this->catalogResourceModelProductCollectionFactory->create()
->addAttributeToSelect($this->catalogConfig->getProductAttributes())
->setStore($this->storeManager->getStore())
->addFieldToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH)
->addAttributeToFilter( 'entity_id', array( 'in' => $searchResult['results'] ) ); echo 'list product';print_r($collection);die;
$orderString = array('CASE e.entity_id');
foreach($searchResult['results'] as $i => $productId) {
$orderString[] = 'WHEN '.$productId.' THEN '.$i;
}
$orderString[] = 'END';
$orderString = implode(' ', $orderString);
$collection->getSelect()->order(new \Zend_Db_Expr($orderString));
return $this->_productCollection;
}
}
My helper /Data
public function getTagalysSearchData()
{
$service = $this->isTagalysActive();
if ($service) {
$searchResult = $service->getSearchResult();
return $searchResult;
} else {
return false;
}
}
Im not getting any product collection returned?
where am i wrong?
Best Answer
The authentic and recommended way to fetch product collection is to use API interface
method
for this you need to build the search criteria first
Your class should include below classes -
Class constructor should be -
Get list method should be -