Давайте четко зададим вопрос, прежде чем вводить детали:
Есть ли способ сложно удалить атрибут значение из продукта?
Под сложно Я имею в виду удаление строки из базы данных, а не только установка значения на ноль или пустое значение.
Теперь подробности:
В настоящее время я столкнулся с проблемой в Magento.
Многие товары в моем магазине имеют определенные пользователем атрибуты, которые не связаны с товаром. Например, скажем, у нас есть сумка продукт, среди других продуктов, таких как футболки, платья, брюки и т. Д.:
Наш мешок продукт имеет только настраиваемый 1 атрибут: цвет .
Наш футболка продукт имеет 2 настраиваемых атрибута: цвет и tshirt_size .
Наше Платье Продукт имеет 2 настраиваемых атрибута: Цвет и Размер платья
Моя текущая проблема заключается в том, что когда я извлекаю свой продукт Bag из базы данных, атрибуты, хранящиеся в моем продукте: color , tshirt_size и dress_size .
Я подозреваю, что это потому, что в нашем магазине вы можете изменить набор атрибутов продукта (благодаря расширению сообщества FlagBit ChangeAttributeSet).
Я думаю, что продукт в сумке был создан с определенным набором атрибутов, затем кто-то изменил набор атрибутов на другой, а другой снова. Это привело бы к тому, что продукт получил ВСЕ атрибуты из ВСЕХ наборов атрибутов, на которые он был изменен. Но это всего лишь причина, и это может быть еще одна причина. На самом деле я в настоящее время не ищу конкретную причину, по которой у моего продукта были несвязанные атрибуты.
Я сегодня хочу сбросить моих продуктов. Под сбросом я подразумеваю удаление атрибутов, не связанных с моим продуктом. В случае с моей сумкой это означает удаление атрибутов tshirt_size и dress_size . И под удалением я имею в виду удалением навсегда этих атрибутов из объекта.
Моя проблема в том, что я не могу найти, как это сделать. Я попытался установить атрибуты в NULL и сохранить продукт, но когда я снова запрашиваю продукт, я все равно получаю атрибут в данных с нулевым значением. Я не хочу, чтобы значение атрибута было нулевым, я хочу, чтобы атрибут не существовал.
Вот пример кода, который немного объясняет то, что я пробовал:
$product = Mage::getModel('catalog/product')->load(1234); //Let's assume that my bag product ID is 1234
Mage::log($product->getData());
/* This last line dump all my products datas and contains among other things:
[...]=>...
[color]=>3
[tshirt_size]=>34
[dress_size]=>45
[...]=>...
*/
Если я сделаю:
$product->setData('tshirt_size',null);
$product->setData('dress_size',null);
$product->save();
затем еще раз:
$product = Mage::getModel('catalog/product')->load(1234);
Mage::log($product->getData());
/* I get:
[...]=>...
[color]=>3
[tshirt_size]=>null
[dress_size]=>null
[...]=>...
*/
Я не хочу этого. Я хочу:
/*
[...]=>...
[color]=>3
[...]=>...
*/
Тот факт, что у меня все еще есть записи в моем массиве, означает, что фактические строки в базе данных не удаляются. Я хочу, чтобы строки были удалены.
Еще больше расстраивает, когда я делаю:
$product->getAttributes();
Он возвращает мне все атрибуты, которые могут быть установлены для моего продукта без несвязанных атрибутов - что имеет смысл, поскольку несвязанные атрибуты отсутствуют в наборе атрибутов моего продукта.
Итак, опять вопрос:
Есть ли способ сложно удалить атрибут значение из продукта?
По сложно Я имею в виду удаление строки из базы данных, а не только установка значения на ноль или пустое.
Спасибо за вашу помощь!
Хьюг.
К вашему сведению: я использую Magento 1.6.1.0 (но это ничего не меняет)