Обновить значение одного атрибута
Я новичок в Magento, поэтому, пожалуйста, простите меня, если это так... дерьмо в коде... Отправка запроса Ajax с идентификатором бренда и текущим состоянием "статус = 1 или 0" и хотел бы обновить состояние в таблице:
public function BrandsAction()
{
$brand_id = $this->getRequest()->getPost("brand_id");
$status = $this->getRequest()->getPost("status");
$_category = Mage::getResourceModel('catalog/category_collection')
->addFieldToFilter('name', 'Brands')
->getFirstItem();
$categoryId = $_category->getId();
$brands = Mage::getModel('catalog/category')->load($categoryId);
$brand = $brands->load($brand_id);
foreach($brand as $element){
echo $element;
if($element->getId() == $brand_id){
$element->getData();
$element->getAttribute('show_brand');
$element->setData('show_brand',$status);
$element->save();
}
}
Я ожидал, что он обновит значение в столбце "show_brand", но на самом деле он ничего не делает, просто возвращает данные обратно, поэтому я могу видеть в консоли, какие значения были отправлены. Как обновить значение для указанной "категория -> Бренд -> Какой-то бренд"?? Я что-то пропустил ?
//just checking category id
$categoryId = $_category->getId();
//loading selected category
$brands = Mage::getModel('catalog/category')->load($categoryId);
//Loading Brand Data
$brand = $brands->load($brand_id);
Не так ли? Или я что-то неправильно понял?
Текущий код:
public function BrandsAction()
{
$brandNameId = $this->getRequest()->getPost("brand_id");
$status = $this->getRequest()->getPost("status");
$brandsNameCat = Mage::getModel('catalog/category')->load($brandNameId);
$brandsNameCat->setShowBrand($status);
$brandsNameCat->save();
}
Не обновляет значения в таблице... что я должен проверить, чтобы убедиться, что он обновит значения?
2 answers
В этом случае приведенный ниже код должен работать
<?php
function BrandsAction()
{
$brand_id = $this->getRequest()->getPost("brand_id");
// I assume $brand_id is your brand name category id which is subcategory or brands (Parent category)
$status = $this->getRequest()->getPost("status");
$brandsNameCat = Mage::getModel('catalog/category')->load($brand_id);
$brandsNameCat->setShowBrand($status);
$brandsNameCat->save();
}
Чтобы избежать сохранения всей модели и повысить производительность, вы можете заменить следующий код:
$brandsNameCat->save();
С помощью:
$brandsNameCat->saveAttribute($brandsNameCat, 'show_brand');