我有一个充满SKU的CSV,我需要在Magento目录之外加载以进行一些更改。
到目前为止,我有这个:
require_once('bla/bla/../../app/Mage.php');
umask(0);
Mage::app();
$product1 = Mage::getModel('catalog/product')->load(15186);
$productid = Mage::getModel('catalog/product')->getIdBySku('thatsku');
$product2->load($productid);
var_dump($product1);
var_dump($product2);
在这种情况下,$product 1 按预期返回产品,但 $product 2 返回bool(false)
。当我尝试这样做时,也会发生同样的事情:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
var_dump ($_product);
$product也在此处返回bool(false)
。
知道发生了什么吗?
编辑:对不起,我很笨。数据库中没有SKU,甚至认为我可以发誓我是为了测试而添加它。此代码有效。
试试这个,
print_r($product);
有时var_dump似乎不会触发属性获取者,因此它们显示为 null
在这里我可以给你一个替代的解决方案,它会为你工作
创建函数以从SKU获取产品ID,这样会更好
function getProductId($sku)
{
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
static $product_ids;
if (is_object($sku)) {
$sku = $sku->asArray();
}
if (empty($product_ids)) {
$skus = $write->query('select sku, entity_id from `catalog_product_entity` where type_id="simple"');
foreach ($skus->fetchAll() as $data) {
$product_ids[$data['sku']] = $data['entity_id'];
}
unset($skus);
unset($data);
}
return isset($product_ids[$sku]) ? $product_ids[$sku] : '';
}
将返回产品ID,然后您可以使用以下代码轻松找到
$id = getProductId('YOUR SKU GOES HERE');
$product = Mage::getModel('catalog/product')->load($id);
希望这肯定会对您有所帮助。
对不起,我很笨。数据库中没有SKU,甚至认为我可以发誓我是为了测试而添加它。此代码有效。