0

I'm using graphql to get data to my PWA frontend project.Following is my schema.graphqls

type Query { comparelist: [ComparelistOutput] @resolver(class: "NeoSolax\\CompareList\\Model\\Resolver\\ComparelistItemResolver") @doc(description: "An array of items in the customer's compare list") } type ComparelistOutput { id:String sku:String url_key:String } 

ComparelistItemResolver.php

class ComparelistItemResolver implements ResolverInterface { use NeoSolax\CompareList\Helper\getCompareList; public function __construct( getCompareList $getCompareList, ) { $this->getCompareList = $getCompareList } public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null ) { /** @var ContextInterface $context */ $customerId = $context->getUserId(); $comparelistItems = $this->getCompareList->getCompareListItems($customerId)->getItems(); $data = []; foreach ($comparelistItems as $comparelistItem) { $itemProduct = $comparelistItem->getData(); $data[] = [ 'id' => $itemProduct['product_id'], 'sku' => $itemProduct['sku'], 'url_key'=>$itemProduct['url_key'] ]; } return $data; } } 

Following is how I get my data to pwa frontend

const {data,loading:comparelistLoading}=useQuery(getCustomerCompareList); 

data gets a empty array comparelist.What is wrong with my code?Please help

1
  • print_r($data):die; did you get any data while printing ? Commented Dec 9, 2020 at 5:46

2 Answers 2

0

Your $comparelistItems is empty. Therefore, you never perform the code inside the foreach statement, resulting in an empty $data array.

P.S.: $getCompareListis not a standard Magento class, therefore we cannot know if the problem resides inside the getCompareListItems() function you call to populate $compareListItems.

0

Try this

use NeoSolax\CompareList\Helper\getCompareList; class ComparelistItemResolver implements ResolverInterface { public function __construct( getCompareList $getCompareList, ) { $this->getCompareList = $getCompareList } public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null ) { /** @var ContextInterface $context */ $customerId = $context->getUserId(); $comparelistItems = $this->getCompareList->getCompareListItems($customerId)->getItems(); $data = []; $x = 0; foreach ($comparelistItems as $comparelistItem) { $itemProduct = $comparelistItem->getData(); $data[$x]['id'] = $itemProduct['product_id']; $data[$x]['sku'] = $itemProduct['sku']; $data[$x]['url_key'] = $itemProduct['url_key']; $x++; } return $data; } } 

Reference link

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.