Condicionales para addAttributeToFilter en Magento 2

Cuando queremos recoger datos de base de datos a través de colecciones EAV (tanto en Magento 1 como en Magento 2), solemos usar el método addAttributeToFilter
, para filtrar con distintas condiciones que queramos.
Este método es el equivalente a utilizar un WHERE en una consulta de SQL.
Muchas veces nos preguntamos como escribir o usar un operador a través de este método, por eso aquí os dejo un resumen de los distintos operadores y su equivalencia en SQL.
Por defecto cuando usamos el método addAttributeToFilter
es de la siguiente manera:
$coleccion->addAttributeToFilter('nombre', 'Pepe');
Si no añadimos ningún operador, y usamos el método tal cual, el operador usado por defecto es =
(igual).
Por lo tanto esto sería en SQL algo así como:
SELECT *
FROM .....
WHERE nombre = 'Pepe';
Para usar cualquier otro operador que no sea =
debemos especificarlo.
EQUALS (eq
)
// En este caso se puede usar de dos formas, ya que el método usa este operador por defecto
$coleccion->addAttributeToFilter('nombre', 'Pepe');
$coleccion->addAttributeToFilter('nombre', ['eq' => 'Pepe']);
SELECT *
FROM .....
WHERE nombre = 'Pepe';
NOT EQUALS (neq
)
$coleccion->addAttributeToFilter('nombre', ['neq' => 'Pepe']);
SELECT *
FROM .....
WHERE nombre != 'Pepe';
LIKE (like
)
$coleccion->addAttributeToFilter('nombre', ['like' => 'Pep%']);
SELECT *
FROM .....
WHERE nombre LIKE 'Pep%';
NOT LIKE (like
)
$coleccion->addAttributeToFilter('nombre', ['nlike' => 'Pep%']);
SELECT *
FROM .....
WHERE nombre NOT LIKE 'Pep%';
IN (in
)
$coleccion->addAttributeToFilter('id', ['in' => [1, 20, 45, 77]]);
SELECT *
FROM .....
WHERE id IN (1, 20, 45, 77);
NOT IN (nin
)
$coleccion->addAttributeToFilter('id', ['nin' => [1, 20, 45, 77]]);
SELECT *
FROM .....
WHERE id NOT IN (1, 20, 45, 77);
NULL (null
)
$coleccion->addAttributeToFilter('nombre', ['null' => true]);
SELECT *
FROM .....
WHERE nombre IS NULL;
NOT NULL (notnull
)
$coleccion->addAttributeToFilter('nombre', ['notnull' => true]);
SELECT *
FROM .....
WHERE nombre IS NOT NULL;
GREATER THAN (gt
)
$coleccion->addAttributeToFilter('id', ['gt' => 5]);
SELECT *
FROM .....
WHERE id > 5;
GREATER THAN OR EQUAL (gteq
)
$coleccion->addAttributeToFilter('id', ['gteq' => 5]);
SELECT *
FROM .....
WHERE id >= 5;
LESS THAN (lt
)
$coleccion->addAttributeToFilter('id', ['lt' => 5]);
SELECT *
FROM .....
WHERE id < 5;
LESS THAN OR EQUAL (lteq
)
$coleccion->addAttributeToFilter('id', ['gteq' => 5]);
SELECT *
FROM .....
WHERE id <= 5;