1

こんにちは、Magento 内でカスタム モデルを作成しました (リソースは Mage_Core_Model_Resource_Db_Collection_Abstract に基づいています)。すべてがうまく機能します。テーブルにフィルターを作成しようとしましたが、次のwhere句が出力されます。

where
  product_id = 1
  and ((customer_id = 0 and customergroup_id = 2) or (customergroup_id = 0 and customer_id = 3))
  and ((productgroup_id = 0 and product_class = 8) or (product_class = 0 and productgroup_id = 4))

addFilterなどを使用してそれを行う方法についてのアイデアはありますか?

4

1 に答える 1

2

addFieldToFilter/メソッドは、複雑なクエリaddAttributeToFilterはあまり適していません。手動でクエリを作成する必要があります。

$collection->getSelect()
    ->where('product_id = ?', 1)
    ->where(sprintf(
        '((customer_id = %d AND customergroup_id = %d) OR (customer_id = %d AND customergroup_id = %d))',
        0, 2, 3, 0))
    ->where(sprintf(
        '((productgroup_id = %d AND product_class = %d) OR (productgroup_id = %d AND product_class = %d))',
        0, 8, 4, 0));
于 2012-06-28T23:56:24.350 に答える