Magento 1.7 – Loaded Product Missing Media Gallery Attribute

imagemagento-1.7product

I am loading a product like so:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'MyStockCode');   

Then I try to get the images using:

$existingGallery = $product->getMediaGallery('images');   

but it comes back with a null value. When inspecting _data against $product the media_gallery attribute is missing.

From all the references I have read, this is how to load the images against a product but this doesn't seem to be working for me.

Notes:

I can see the images in the admin area against that product so they are definitely there.

I am doing this in the admin area, not frontend.

Best Answer

If you load the product by ID the media gallery will be loaded:

$product = Mage::getModel('catalog/product');
$id = $product->getIdBySku($sku);
$product->load($id);

The difference is that loadByAttribute loads the product via a collection. Alternatively, if you already have a loaded product and simply want to load the associated images, you can use

$product->getResource()->getAttribute('media_gallery')
    ->getBackend()->afterLoad($product);

After that all images of the product are accessible via $product->getMediaGalleryImages()