0

I have created a custom module and I have return collection array but it does not return foreach array in Magento 2.3.2. it returns the only foreach last value.

Block Code

<?php
namespace Developer\Infographics\Block\Index;

use Magento\Framework\View\Element\Template;
use Magento\Catalog\Model\CategoryFactory;


class Leftinfographics extends Template {

    public function __construct(
   \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,

        array $data = []) 
    {

        parent::__construct($context, $data);
        $this->pageConfig = $pageConfig;
        $this->collectionFactory = $collectionFactory;
    }

    public function getCategoryViceversaCollection()
    {
        $collection = array();
        $finalsearch = 'test,magento,abc,xyz'
        $commaList = explode(',', $finalsearch);
        foreach ($commaList as $key => $value) {
        $collection = $this->collectionFactory->create()->getCollection()->addFieldToFilter('tags', array('like' => '%'.$value.'%'));
        }
        return $collection;
    }
}

Template Code

$productxyzdata = $block->getXYZ();
var_dump($productCollectiondata->getData());
11
  • this is because you are creating a new collection with every iteration, thus only having the last one Nov 6, 2019 at 8:48
  • expose your complete code if possible @Devidas Nov 6, 2019 at 10:21
  • yes sure........!
    – Devidas
    Nov 6, 2019 at 10:31
  • Upload your full code please. Nov 6, 2019 at 10:33
  • check I have update code @RohanHapani
    – Devidas
    Nov 6, 2019 at 10:39

3 Answers 3

0

this is because you are creating a new collection with every iteration, thus only having the last one

$collection = array();
$finalsearch = 'test,magento,abc,xyz'
$commaList = explode(',', $finalsearch);
$collection = $this->collectionFactory->create();
foreach ($commaList as $key => $value) {
    $collection->addFieldToFilter('tags', array('like' => '%'.$value.'%'));
}
return $collection;
1
  • error invalid method Developer\Infographics\Model\Infographics::addFieldToFilter
    – Devidas
    Nov 6, 2019 at 9:00
0

Try using this way

$collection = [];
$finalsearch = 'test,magento,abc,xyz';
$commaList = explode(',', $finalsearch);
foreach ($commaList as $key => $value) {
    $collection[] = $this->collectionFactory->create()->getCollection()->addFieldToFilter('tags', array('like' => '%'.$value.'%'));
}
return $collection;
2
  • No it's not working
    – Devidas
    Nov 6, 2019 at 9:48
  • What does error occur if you use this? Nov 6, 2019 at 10:56
0

Try this below code :

$collection = [];
$finalsearch = 'test,magento,abc,xyz';
$commaList = explode(',', $finalsearch);
foreach ($commaList as $key => $value) {
    $collection[] = $this->collectionFactory->create()->addFieldToFilter('tags', ['like' => '%' . $value . '%'])->getData();
}
return $collection;

make sure your collection class should be Developer\Infographics\Model\ResourceModel\Infographics\CollectionFactory

1
  • same error invalid method Developer\Infographics\Model\Infographics::addFieldToFilter
    – Devidas
    Nov 6, 2019 at 10:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.