2

私は次のようにコレクションを引っ張っています

$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('jan')
->addAttributeToSelect('name')
->addAttributeToSelect('upc')
->addAttributeToSelect('ean')
->addAttributeToSelect('price')
->addAttributeToFilter('ean', array('neq' => ''))
->addFieldToFilter(array(
    array('attribute'=>'type_id','eq'=>'simple')        
))
->setPage(1,5);

現在、「ean」が空ではないすべての単純な製品を選択しています。ean OR upc OR jan が空でない単純な製品をすべて選択するにはどうすればよいですか。

つまり、製品に ean、upc、または jan がある限り、すべての製品を選択します。それらがすべて空の場合は、選択しないでください。

4

1 に答える 1

4

http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento

class Mage_Catalog_Model_Resource_Product_Collection extends Mage_Catalog_Model_Resource_Collection_Abstract

-

class Mage_Catalog_Model_Resource_Collection_Abstract extends Mage_Eav_Model_Entity_Collection_Abstract

-

Mage_Eav_Model_Entity_Collection_Abstract

/**
 * Add attribute filter to collection
 *
 * If $attribute is an array will add OR condition with following format:
 * array(
 *     array('attribute'=>'firstname', 'like'=>'test%'),
 *     array('attribute'=>'lastname', 'like'=>'test%'),
 * )
 *
 * @see self::_getConditionSql for $condition
 * @param Mage_Eav_Model_Entity_Attribute_Interface|integer|string|array $attribute
 * @param null|string|array $condition
 * @param string $operator
 * @return Mage_Eav_Model_Entity_Collection_Abstract
 */
public function addAttributeToFilter($attribute, $condition = null, $joinType = 'inner')

解決:

$collection->addAttributeToFilter(
array(
    array(
        'attribute' => 'ean',
        'neq'        => '',
        ),
    array(
        'attribute' => 'upc',
        'neq'      => '',
        ),
    ),
    array(
        'attribute' => 'jan',
        'neq'      => '',
        ),
    )
);
于 2012-08-06T15:25:47.030 に答える