Комплексная сортировка в коллекциях Magento - PullRequest
0 голосов
/ 19 августа 2011

Мне нужно добавить довольно сложную опцию сортировки в коллекцию продуктов в Magento, и я просто не очень хорошо разбираюсь в фреймворке Zend или таблицах EAV, чтобы выяснить, что мне нужно сделать, чтобы сделать эту работу.Я хотел бы иметь возможность сортировать коллекцию продуктов по валовой марже с учетом стоимости доставки.cost - это атрибут Magento, хранящийся в таблице catalog_product_entity_decimal.Стоимость доставки хранится как actual_shipping_cost в таблице catalog_product_entity_varchar.Каким-то образом мне нужно добавить столбец в оператор выбора SQL, по которому я могу сортировать.Этот столбец должен содержать cost из c_p_e_decimal минус actual_shipping_cost из c_p_e_varchar.

У меня есть свои собственные классы, которые расширяются Mage_Catalog_Block_Product_List, Mage_Catalog_Block_Product_List_Toolbar иMage_Catalog_Model_Config.Они работают вместе, чтобы добавить необходимую опцию сортировки в доступный массив сортировки.Внутри моего пользовательского класса List я проверяю getCurrentOrder() на экземпляре панели инструментов.Если это margin Мне нужно добавить столбец с необходимыми значениями и применить сортировку.

Итак, я дошел до этого, но он создает правильный Zend_Db_Expr, который имеетменя смутило.Я не эксперт в объединениях, союзах и во всем, что касается SQL, и я не очень хорошо разбираюсь в Zend Framework, поэтому, пожалуйста, прости мое невежество.Я читал о Zend Framework и теперь я в основном понимаю, на что смотрю, когда нахожу примеры, но создание собственного с нуля все еще немного за пределами меня.Так что любое руководство будет ДЕЙСТВИТЕЛЬНО полезным!

Спасибо!

1 Ответ

0 голосов
/ 19 августа 2011

Что ж, если вам нужно отсортировать поля по полям, тогда вы ищете значения из неправильных мест, поскольку вы знаете маржу только после продажи и доставки, а также после того, как пользователь ввел адрес и так далее. Таким образом, наилучшим подходом будет просмотреть выполненные заказы и позиции в каждом заказе и стоимость доставки по каждому заказу и записать значение маржи для какого-либо атрибута в вашей коллекции продуктов, а затем отфильтровать, как и любой другой атрибут.

...