2012-04-26 5 views
0

私は請求書グリッドに顧客の '会社'属性を追加する必要があります。 はコードが変更され、phpmyadminで正しいクエリ結果が表示されますが、どういうわけか2つはInvoiceグリッドの合計レコードとして表示されます。私は、ページあたり200へのレコードの数を変更した場合 Magento請求書グリッド新しい列の問題

protected function _prepareCollection() 
{ 
    $collection = Mage::getResourceModel($this->_getCollectionClass()); 
    $collection->getSelect()->joinInner(array('order_address' => Mage::getSingleton('core/resource')->getTableName('sales_flat_order_address')),'order_address.parent_id = main_table.order_id',array('company'))->group('parent_id')->order('entity_id', 'desc'); 

    $this->setCollection($collection); 
    return parent::_prepareCollection(); 
} 

とクエリ

SELECT `main_table`.*, `order_address`.`company` FROM `sales_flat_invoice_grid` AS `main_table` INNER JOIN `sales_flat_order_address` AS `order_address` ON order_address.parent_id = main_table.order_id GROUP BY `parent_id` 

あり、それはすべてのことの記録を示しているが、ページングおよび合計レコード内のいくつかの問題があります。

常に1ページと '合計レコードが見つかりました'が表示されます。だから私は次のページに移動することはできません。

Anye help please。

ありがとうございました

答えて

0

、ここでのソリューションです。

結果フォルダ構造は次のようになりますので、Magentoの/ libに/ Varien /データ/コレクション/をdb.php からコピーをdb.phpファイルがローカルディレクトリにそれを貼り付けます。 Magentoの/アプリ/コード/ローカル/ Varien /データ/コレクション/ Db.php

public function getSelectCountSql() 
{ 
    $this->_renderFilters(); 
    $countSelect = clone $this->getSelect(); 
    $countSelect->reset(Zend_Db_Select::ORDER); 
    $countSelect->reset(Zend_Db_Select::LIMIT_COUNT); 
    $countSelect->reset(Zend_Db_Select::LIMIT_OFFSET); 
    $countSelect->reset(Zend_Db_Select::COLUMNS); 
    if(count($this->getSelect()->getPart(Zend_Db_Select::GROUP)) > 0) { 
     $countSelect->reset(Zend_Db_Select::GROUP); 
     $countSelect->distinct(true); 
     $group = $this->getSelect()->getPart(Zend_Db_Select::GROUP); 
     $countSelect->columns("COUNT(DISTINCT ".implode(", ", $group).")"); 
    } else { 
     $countSelect->columns('COUNT(*)'); 
    } 
    return $countSelect; 
} 
+0

なぜこの回答の元の著者には謝らないのですか? http://stackoverflow.com/a/4219386/927404 –

関連する問題