MagentoでAdminhtmlグリッド用にこれを行う方法について興味がある方は、_prepareCollection
関数(1.6.1.0でテスト済み)をご覧ください。カテゴリ2とカテゴリ5に関する質問に書いたことは、野生のガチョウの追跡に終わった。
protected function _prepareCollection()
{
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('status') /* so i can filter by enabled/disabled */
->joinField('category_product'
, 'catalog_category_product'
, 'category_id'
, 'product_id = entity_id'
, null
, 'left'
)
;
/*ideally this should be an 'addFieldToFilter' but it doesn't work. Oh well.*/
$collection->getSelect()
->where('at_category_product.category_id IS NULL')
;
$this->setCollection($collection);
return parent::_prepareCollection();
}
出典
2012-01-15 07:23:32
Max
これは、たとえばカテゴリ2,5,7の商品も返します。 'IN'は排他的ではありません。 –
うわー - 速い応答に感謝します!私がコレクションで何をしようとしているので、クエリはProductテーブルから選択する必要があります。これを反映するためにこれをどのように修正しますか? – Max
@MattFellows:いいえ、そうではありません。 - カテゴリが7の場合、case文は1と評価され、したがって合計は1より大きいと評価されます。したがって、having節はfalseになり、グループは選択されません。 –