2012-06-17 2 views
2

Я начинаю получать небольшой опыт с magento, но коллекции - это некоторые несоответствия.magento - отличия от коллекций

  1. Некоторые коллекции используют addAttributeToSelect и addAttributeToFilter, тогда как другие используют addFilter и addSelect.

Почему это и как вы прямо указываете, какая коллекция использует?

  1. Как, черт возьми, вы вступаете в коллекции. Я пробовал каждый отдельный пример, который никогда не работает. В частности, я хотел бы присоединиться к доставке, счета-фактуры и заказ коллекции

ответ

0
  1. Насколько я знаю, нет AddFilter и функции addSelect в Магнето. То, что вы можете назвать, это различия между addFieldToFilter и addAttributeToFilter.

    Разница между этими двумя заключается в том, что в Magento есть определенный тип данных, который называется EAV. Вы можете больше узнать об этом в другом месте. Продукты и их атрибуты, клиенты и продажи - EAV в Магнето. Быстрый фон под EAV состоит в том, что данные хранятся в разных таблицах, поэтому функции фильтрации коллекции абсолютно разные.

  2. Это подводит нас к вашим вторым вопросам. Поскольку в Magento нет отдельной таблицы для продуктов, клиентов или заказов, вы не можете применить к ней обычный SQL join. Однако маловероятно, что вам это понадобится часто. Для всех других не EAV случаев вы можете использовать следующий синтаксис:

    $collection = Mage::getModel('group/model')->getCollection(); 
    $collection->getSelect()->join(array(
        'your_alias' => Mage::getSingleton('core/resource')->getTableName('group2/model2')), 
        'main_table.your_id = your_alias.your_id', 
        array()); 
    

Пожалуйста, дайте мне знать, если я могу сделать его более ясным.

Смежные вопросы