Стол соединения решетки заказов на продажу Magento - PullRequest
1 голос
/ 16 августа 2011

Интересно, кому-то повезло, если он присоединил таблицу позиций заказов к сетке заказов на продажу и смог правильно отфильтровать?

Я уже смог завершить соединение, вот так:

protected function _prepareCollection()
{
    parent::_prepareCollection();

    $collection = Mage::getResourceModel($this->_getCollectionClass())
    ->join(
        'sales/order_item',
        '`sales/order_item`.order_id=`main_table`.entity_id',
        array(
            'skus'  => new Zend_Db_Expr('group_concat(`sales/order_item`.sku SEPARATOR ",")'),
            'names' => new Zend_Db_Expr('group_concat(`sales/order_item`.name SEPARATOR ",")'),
            )
        );
        $collection->getSelect()->group('entity_id');

    $this->setCollection($collection);

    return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
}

Но я сейчас пытаюсь добавить фильтр столбцов следующим образом:

protected function _addColumnFilterToCollection($column)
{
    if($this->getCollection() && $column->getFilter()->getValue()) 
    {
        if($column->getId() == 'skus')
        {
            $this->getCollection()->join(
                'sales/order_item',
                '`sales/order_item`.order_id=`main_table`.entity_id',
                array(
                    'skus'  => new Zend_Db_Expr('group_concat(`sales/order_item`.sku SEPARATOR "|")'),
                )
            )->getSelect()
                ->group('`main_table`.entity_id')
                ->having('find_in_set(?, `main_table`.skus)', $column->getFilter()->getValue());

            return $this;
        }
        if($column->getId() == 'names')
        {

            $this->getCollection()->join(
                'sales/order_item',
                '`sales/order_item`.order_id=`main_table`.entity_id',
                array(
                    'names' => new Zend_Db_Expr('group_concat(`sales/order_item`.name SEPARATOR ",")'),
                )
            )->getSelect()
                ->group('`main_table`.entity_id')
                ->having('find_in_set(?, names)', $column->getFilter()->getValue());

            return $this;
        }
    }
    return parent::_addColumnFilterToCollection($column);
}   

Каждый раз, когда я пытаюсь фильтровать, я получаю эту ошибку: "Столбец не найден: 1054 Неизвестный столбец 'main_table.names' в 'с предложением ...".

Пожалуйста, дайте мне знать, если вы уже сталкивались с этим, и есть ли у вас какие-либо указатели?

1 Ответ

1 голос
/ 30 сентября 2011

У меня была такая же проблема, когда я более внимательно посмотрел на проблему, я увидел, что запрос на нумерацию страниц вызывал ошибку.Измените getSelectCountSql () в вашей модели, добавьте следующее

$countSelect->reset(Zend_Db_Select::HAVING);

Ваша страница будет показана, но вы должны изменить getSelectCountSql (), чтобы получить правильное количество страниц и результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...