Hello I would like to set the Description for magento products using data collected from Amazon api. I am calling the API and would like to get the xml response into magento description. I have some code prepared which works:
<?php
require('../AmazonApi.php');
require_once ('../app/Mage.php');
Mage::app();
//Create API access object
$public_key = '*************';
$secret_key = '*************';
$associate_tag = '**********-21';
$amazon_api = new AmazonAPI($public_key, $secret_key, $associate_tag);
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('asin')
->addAttributeToSelect('description');
//Array of request parameters
foreach($products as $product)
{
$asin = $product->getAsin();
$product->setDescription($response);
$product->getResource()->saveAttribute($product, 'description');
$params_array = array(
'Operation' => 'ItemLookup',
'IdType' => 'ASIN',
'ItemId' => $asin ,
'ResponseGroup' => 'Tracks');
// returns a list of items for the search query 'Slow Magic'
$response = $amazon_api->sendRequest($params_array);
foreach ($response as $restponse)
{
sleep(1);
}
echo '<pre>';
print_r($response);
echo '</pre>';
}
foreach($parsed_xml->OperationRequest->Errors->Error as $error){
echo "Error code: " . $error->Code . "\r\n";
echo $error->Message . "\r\n";
echo "\r\n";
}
The code is correct the only problem with is the response, the error I am getting in the logs is:
Object of class stdClass could not be converted to string Object of class stdClass could not be converted to string.
Any how to convert to a string?
2 Answers 2
Try to use instead
$product->setDescription($response);
$product->save();
to this code
$product->setDescription($response);
$product->getResource()->saveAttribute($product, 'description')
-
Zmage,Good answer2016年02月10日 14:16:00 +00:00Commented Feb 10, 2016 at 14:16
-
Unfortunately , there is no difference in the product description . However the code looks more correct.Bako Gdaniec– Bako Gdaniec2016年02月10日 14:25:51 +00:00Commented Feb 10, 2016 at 14:25
-
This is the error that I am getting in the logs : Recoverable Error: Object of class stdClass could not be converted to string in /var/www/html/lib/Varien/Db/Adapter/Pdo/Mysql.php on line 3074Bako Gdaniec– Bako Gdaniec2016年02月10日 14:51:00 +00:00Commented Feb 10, 2016 at 14:51
The real problem here is that you're trying to load a collection like if it was a single product:
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('asin')
->addAttributeToSelect('description')
->load($productId);
You do not need to do so, simply do:
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('asin')
->addAttributeToSelect('description');
-
Thank you however this doesn't solve the problem as the products are not being updated.Bako Gdaniec– Bako Gdaniec2016年02月10日 13:56:03 +00:00Commented Feb 10, 2016 at 13:56
-
Could try adding
Mage::log($product->getData());at the start and the end inside your foreach loop and compare both results please (paste them in your questio if necessary)Raphael at Digital Pianism– Raphael at Digital Pianism2016年02月10日 13:59:07 +00:00Commented Feb 10, 2016 at 13:59
->addAttributeToSeleXct('asin')where it should be->addAttributeToSelect('asin')Mage::app();toMage::app('admin');and check what happen!->load($productId);