У меня есть несколько тысяч продуктов, и я хочу найти все продукты без изображения. Я пытался найти (нет изображения) в сетке продуктов администратора, но безрезультатно. Как сделать запрос SQL, который отключает все эти продукты?
Перестаньте думать в терминах SQL. Начните думать с точки зрения моделей Magento. Модели Magento просто используют SQL в качестве бэкэнда. Возможен запрос вещей с помощью необработанного SQL, но он будет варьироваться от версии к версии Magento и может отличаться в зависимости от используемого вами бэкэнда.
Запустите следующее из действия тестового контроллера или где-нибудь еще, откуда вы можете выполнить код Magento. Он запрашивает модель для продуктов без изображения
//this builds a collection that's analagous to
//select * from products where image = 'no_selection'
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('image', 'no_selection');
foreach($products as $product)
{
echo $product->getSku() . " has no image \n<br />\n";
//var_dump($product->getData()); //uncomment to see all product attributes
//remove ->addAttributeToFilter('image', 'no_selection');
//from above to see all images and get an idea of
//the things you may query for
}
Некоторое время назад я написал статью в блоге с запросом sql для поиска отсутствующих изображений. Он не отключает продукты, но, по крайней мере, это начало: http://prattski.com/2010/06/29/magento-sql-to-find-missing-images/. Должно быть довольно легко сделать с этого момента. Возможно, вам придется изменить идентификатор атрибута, если ваш не совпадает с моим.