2011-03-14 12 views
24

Me gustaría seleccionar productos dependiendo de varios criterios de diferentes atributos.addAttributeToFilter y O condición en la Colección de Magento

sé cómo usuario $collection->addAttributeToFilter('someattribute', array('like' => '%'));

pero me gustaría utilizar varios atributos para O condición.

igual:

$collection->addAttributeToFilter('someattribute', array('like' => 'value'));` 

O

$collection->addAttributeToFilter('otherattribute', array('like' => 'value'));` 

obtener productos que o bien 'someattribute' O 'otherattribute' ajustado a 'valor'

¿Es posible?

Respuesta

54

sí lo es.

$collection->addAttributeToFilter(
    array(
     array('attribute' => 'someattribute', 'like' => 'value'), 
     array('attribute' => 'otherattribute', 'like' => 'value'), 
     array('attribute' => 'anotherattribute', 'like' => 'value'), 
    ) 
); 
+13

tenga en cuenta que esta sintaxis no es correcta para addFieldToFilter, consulte http://stackoverflow.com/a/7851884/336905 para obtener la sintaxis –

+0

, ¿no puede dar el enlace más genérico posible, donde la gente tiene que vadear y buscar a través de encontrar cosas? – ahnbizcad

+1

gracias por notar @ahnbizcad, esta publicación es muy antigua. Magento ha cambiado la ubicación del enlace. – Rito

8

En caso de que desee utilizar el mismo para la función addFieldToFilter para las colecciones que no están utilizando la EAV, a continuación, puede utilizar el siguiente formato:

$collection->addFieldToFilter(
array(
    'someattribute', 
    'otherattribute', 
    'anotherattribute', 
), 
array(
    array('like' => 'value'), 
    array('like' => 'value'), 
    array('like' => 'value'), 
)); 
3

Otra cosa a considerar para lograr 'OR" es:

->addFieldToFilter(
    'type_id', 
    ['in' => ['simple', 'configurable']] 
) 
2

Para addAttributeToFilter:

$collections = Mage::getModel('sales/order')->getCollection() 
      ->addAttributeToFilter('increment_id', array('in' => $sellerIncrementIds)) 
      ->addAttributeToFilter('status', ['in' => ['pending','pending_seller_confirmation']]); 
Cuestiones relacionadas