Я работаю над некоторыми скриптами для автоматизации некоторых вещей внутри нашего интернет-магазина.Загрузите информацию о продукте, сравнив пользовательский атрибут в Magento
Я просмотрел множество форумов и вопросов.
Теперь я почти закончил свой сценарий, но есть небольшая вещь, которая не работает, но я не могу придумать, что я делаю неправильно.
Целью этого скрипта является получение продуктов с таким же значением атрибута, как и значения в массиве (извлеченные из БД).
Так вот мой код:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require_once('../app/Mage.php');
require_once('db.php');
Mage::app();
$db = db_connection();
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('ean');
$getean = $db->prepare('SELECT ean_l FROM mytable');
$getean->execute();
$allean = $getean->fetchAll();
foreach($allean as $ean) {
$collection->addFieldToFilter(array(
array('attribute'=>'ean','eq'=>'' . $ean['ean_l'] . ''),
));
echo 'ean_l: ' . $ean['ean_l'] . '<br>';
foreach ($collection as $product) {
echo $product['entity_id'];
}
}
Так вот как это работает:
Мы выбираем атрибут (ЕАН).
Мы получаем список всех номеров ean из базы данных.
Мы просматриваем список и сравниваем любой продукт с номером ean.
Затем мы прокручиваем коллекцию и получаем идентификатор соответствующего продукта.
Тем не менее, все $product['entity_id']
- это 273. Верно, что entity_id равен 273, но есть также продукт 274 с соответствующим номером ean.
Вот результат из сценария (это намного больше):
Так почему же это? Потому что в моих рассуждениях он меняет ean_l каждый цикл и выравнивает его со значениями атрибутов.
И тогда это должно изменить коллекцию, не так ли?
Так не должно ли оно хотя бы показать 274 в какой-то момент?
Этот вопрос не особенно подходит для программистов Magento, но другие программисты тоже могут помочь, поэтому я решил опубликовать его на SO.