При экспорте CSV из таблицы продаж> Заказов я получаю ошибку - "Вы не можете определить имя корреляции "заказ" более одного раза"


Когда я пытаюсь экспортировать csv в разделе Продажи > Сетка заказов, я получаю

        You cannot define a correlation name 'order' more than once

Трассировка: #0 /www/Myproject/htdocs/lib/Varien/Db/Select.php (281): Zend_Db_Select->_join ("левое соединение", Массив, "order.entity_id...", Массив, НУЛЬ) # 1 /www/Myproject/htdocs/lib/Zend/Db/Select.php (357): Varien_Db_Select->_join("левое соединение", Массив, "order.entity_id...", Массив, НУЛЬ) # 2 /www/Myproject/htdocs/app/code/local/Abc/OrderType/Model/Observer.php (32): Zend_Db_Select->Объединить (Массив, 'order.entity_id...', Массив) # 3 /www/Myproject/htdocs/app/code/core/Mage/Core/Model/App.php (1339): Abc_OrderType_Model_Observer->salesordergridcollectionloadbefore(Объект(переменный_евент_обсервер)) # 4 /www/Myproject/htdocs/app/code/core/Mage/Core/Model/App.php (1318): mage_core_model_app->_callobserverметод(Объект(abc_ordertype_model_observer), 'salesordergridc...', Объект(varien_event_observer)) # 5 /www/Myproject/htdocs/app/Mage.php (448): Mage_Core_Model_App->Событие отправки ('sales_order_gri...', массив) #6 /www/Myproject/htdocs/app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php(590): маг::dispatchevent метод('sales_order_gri...', массив) #7 /www/Myproject/htdocs/lib/Varien/Data/Collection/Db.php (565): mage_core_model_ресурс_дб_коллекция_абстрат->_высокая нагрузка() #8/www/Myproject/htdocs/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php (951): переменная_дата_коллекция_дб->загрузить() #9 /www/Myproject/htdocs/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(1011): Mage_Adminhtml_Block_Widget_Grid->_exportIterateCollection('_exportCsvItem', массив) #10 /www/Myproject/htdocs/app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php (703): Mage_Adminhtml_Block_Widget_Grid->Получить файл() #11 /www/Myproject/htdocs/app/code/core/Mage/Core/Controller/Varien/Action.php (418): Контроллер Mage_Adminhtml_Sales_OrderController->ЭКСПОРТСВ() #12 /www/Myproject/htdocs/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php (254): Действие mage_core_controller_varien_->отправка ('экспортcsv') #13/www/Myproject/htdocs/app/code/core/Mage/Core/Controller/Varien/Front.php (172): Mage_Core_Controller_Varien_Router_Standard->соответствие(Объект(mage_core_controller_request_http)) #14/www/Myproject/htdocs/app/code/core/Mage/Core/Model/App.php (354): Mage_Core_Controller_Varien_Front->отправка() #15 /www/Myproject/htdocs/app/Mage.php (684): Mage_Core_Model_App->выполнить (массив) #16/www/Myproject/htdocs/index.php (87):Маг::выполнить (", "хранить")

И мой метод наблюдателя выглядит как

public function salesOrderGridCollectionLoadBefore($observer) {
        $collection = $observer->getOrderGridCollection();
        $select = $collection->getSelect();
        $select->joinLeft(array('order' => $collection->getTable('sales/order'))
                , 'order.entity_id=main_table.entity_id'
                , array('type' => 'type'));
    }
Author: Ronak Chauhan, 2016-12-26

2 answers

Похоже, что событие вызывается несколько раз. В результате чего ваш код в observer несколько раз изменяет коллекцию.

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

Надеюсь, это поможет.

 3
Author: ProxiBlue, 2016-12-26 16:49:41

Это потому, что Magento дважды пытается присоединиться к одной и той же коллекции с одним и тем же псевдонимом. Пытаюсь использовать order_new в качестве псевдонима.

 0
Author: Priyank, 2016-12-26 13:38:06