Magento addFieldToFilter позволяет, АННУЛИРУЕТ

С VS2008 можно сделать это:

devenv solution.sln /build configuration
10
задан leepowers 20 November 2009 в 03:20
поделиться

3 ответа

Вам не нужно использовать addFieldToFilter .

сейчас решение: имя атрибута
известно как код в magento, вам просто нужно использовать приведенный ниже код, чтобы получить все продукты, которые имеют определенный атрибут в виде массива


$prodsArray=Mage::getModel('catalog/product')->getCollection()
                                  ->addAttributeToFilter('custom_attribute_code')
                                  ->getItems();

, вы также можете указать определенные условия для значения атрибута в addAttributeToFilter во втором параметре addAttributeToFilter.

вы можете найти этот метод в этом файле (для дальнейшего изучения):

app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
2
ответ дан 3 December 2019 в 13:11
поделиться

Фильтрация коллекции товаров по нулевым / пустым атрибутам имеет два возможных решения. Magento использует INNER JOIN, чтобы получить значения атрибутов для фильтрации. НО, если атрибуту продукта не присвоено значение, соединение не удастся, так как таблица / связь базы данных отсутствуют.

Решение №1: Используйте addAttributeToFilter () и измените тип соединения с «внутреннего» (по умолчанию ) на "влево":

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('custom_attribute', array( ... condition options ..), 'left');

Решение №2: Убедитесь, что ваш настраиваемый атрибут имеет значение по умолчанию. Magento в этом отношении консервативен. Magento создаст связь между атрибутом и продуктом, только если для атрибута задано значение. Таким образом, при отсутствии значения, указанного пользователем или значения по умолчанию, атрибут не будет доступен для фильтрации продукта , даже если атрибут отображается в представлении сведений о продукте в панели администратора.

19
ответ дан 3 December 2019 в 13:11
поделиться

Я вижу, вы уже нашли решение, но есть также этот вариант:

$collection->addFieldToFilter('parent_item_id', array('null' => true));

, но если вы хотите использовать «NULL» => FALSE, который не работает. (И я заметил, что вы можете использовать такие элементы, как «в», «Nin», «EQ», «NEQ», «GT»), вы можете сделать это:

$collection->addFieldToFilter('parent_item_id', array('neq' => 'NULL' ));

Надеюсь, это все еще полезно ...

54
ответ дан 3 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: