製品リファレンスを含むカスタムテーブルがありますproduct_id。次に、バックエンドグリッドに製品情報(SKU、名前)を表示したいのですが、これを行うためのベストプラクティスが何なのかわかりません。
SKU次のように私の推測は次のとおりです。
$collection->join(
    'catalog/product',
    'product_id=`catalog/product`.entity_id',
    array('product_sku' => 'sku')
)( 私のグリッドブロッククラスのメソッドからのコード_prepareCollection() )
しかし、製品名はどうですか?これは、catalog_product_entity_varcharにあります。私の理解では、独自のリソースモデルとコレクションがベースになってMage_Eav_Model_Entity_Collection_Abstractいる場合は、のようなメソッドを使用できるため、簡単に入手できますjoinAttribute。しかし、私のモデルは単純なテーブルに基づいており、そこから拡張されてMage_Core_Model_Resource_Db_Collection_Abstractおり、joinAttribute利用できる方法はありません。
この場合、製品名を取得する最良の方法は何ですか?
あなたの時間と助けをありがとう:-)
更新: より正確には、リソースモデルとコレクションについて話していました。次のようないくつかの属性を持つ単純なフラットテーブルと一致します。
entity_id    product_id    created_at    user_id私の意図は、いくつかの統計を表示するバックエンドにグリッドを配置することです。
ProductSku    Count(ProductSku)    MAX(created_at)私の知る限り、これを行うための最善の方法は、グリッドブロッククラスを使用することであり、実行するメソッドは_prepareCollection()です。
私の方法は次のようになります:
protected function _prepareCollection()
{
    // Get and set our collection for the grid
    $collection = Mage::getResourceModel($this->_getCollectionClass());
    $collection
        ->join(
            'catalog/product',
            'product_id=`catalog/product`.entity_id',
            array('product_sku' => 'sku')
            )
        ->addExpressionFieldToSelect('product_count', 'COUNT({{product_id}})', 'product_id')
        ->addExpressionFieldToSelect('newest', 'MAX({{created_at}})', array('created_at'=>'main_table.created_at'))
        ->getSelect()->group('product_id');
    $this->setCollection($collection);
    return parent::_prepareCollection();
}これはsku(_prepareColums()メソッドではproduct_skuと呼んでいます)に適していjoinますが、名前(および製造元など)を取得するためにここに何を挿入する必要がありますか?
使用できないので何か悪いことをしていますjoinLeft()か?
Mage_Core_Model_Resource_Db_Collection_Abstractてエラーが発生しますCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()。これはEAVリソースモデルを使用していないためだと思いますか?