Al utilizar el método de recopilación de Magento, addFieldToFilter ¿es posible permitir el filtrado por valores NULL? Quiero seleccionar todos los productos de una colección que tengan un atributo personalizado, incluso si no se asigna ningún valor al atributo.Magento addFieldToFilter allow NULLs
Respuesta
No necesita utilizar addFieldToFilter
.
ahora la solución:
atributos nombre se conoce como code
en Magento, sólo tiene que utilizar el código de abajo para conseguir todos los productos que tienen un atributo específico como una matriz
$prodsArray=Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('custom_attribute_code')
->getItems();
también puede especificar ciertas condiciones para el valor del atributo en addAttributeToFilter
en el segundo parámetro de addAttributeToFilter.
puede encontrar este método en este archivo (queda en estudio):
app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php
Filtrado de una colección de productos por atributos nulos/vacíos tiene dos soluciones posibles. Magento usa INNER JOIN para tomar los valores de los atributos para filtrar. PERO si al atributo de producto no se le asigna un valor, la unión fallará, ya que falta una tabla/relación de base de datos.
Solución # 1: Uso addAttributeToFilter() y cambie el tipo de combinación de "interior" (por defecto) a "izquierda":
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('custom_attribute', array(... condition options ..), 'left');
Solución # 2: Asegúrese de que el atributo personalizado tiene un valor predeterminado Magento es conservador en este sentido. Magento solo creará la relación entre un atributo y un producto si se otorga un valor para el atributo. Por lo tanto, en ausencia de un valor especificado por el usuario o un valor predeterminado, el atributo no será accesible para filtrar un producto , incluso si el atributo aparece en la vista de detalles del producto en el panel de administración.
Veo que ya ha encontrado una solución, pero también hay esta opción:
$collection->addFieldToFilter('parent_item_id', array('null' => true));
Pero si desea utilizar "NULO" => false, lo que no funciona. (y me di cuenta de que puede utilizar elementos tales como "en", "nin", "eq", "NEQ", "GT"), usted puede hacer esto:
$collection->addFieldToFilter('parent_item_id', array('neq' => 'NULL'));
Hope esto sigue siendo útil. ..
Consulte la documentación en el código de Varien_Data_Collection_Db :: _ getConditionSql(). Describe todas las opciones que son posibles, como el mencionado 'nulo', pero también 'notnull' para el reverso. – fietserwin
Esto funciona por no filtros NULL
$collection->addFieldToFilter('parent_item_id', array('notnull' => true));
Debido a que la cuestión no coincide exactamente con el título de la pregunta y me encontré con la de ellos varias veces por la búsqueda de una condición como: valor especial o NULL
Si desea filtrar una colección a juego un valor o NULL, entonces usted puede utilizar:
$collection->addFieldToFilter('<attribute>', array(
array('eq' => '<value>'),
array('null' => true)
));
- 1. Magento addFieldToFilter: Dos campos coinciden como OR, no Y
- 2. .htaccess allow localhost problema
- 3. .NET: ¿Permitir NULLS en los campos DB?
- 4. ¿Cómo hacer NULLS LAST en SQLite?
- 5. C# 4: ¿cómo detectar nulls en línea?
- 6. Access-Control-Allow-Origen emite
- 7. ctype_alpha pero allow spaces (php)
- 8. cómo obtener información de pago en Magento?
- 9. Filtrado Magento Colecciones por COND1 Y (O COND2 COND3)
- 10. ORDEN DE SQL por `no` con NULLs al final
- 11. C# ADO.NET: nulls y DbNull: ¿hay una sintaxis más eficiente?
- 12. El comando OpenRowSet en TSQL está retornando NULLS
- 13. SQL Server equivalente a NULLS FIRST de Oracle?
- 14. Proporcionar Access-Control-Allow-Origin con comodín
- 15. Access-Control-Allow-Origen: * en Tomcat
- 16. ¿Qué hace get-task-allow en Xcode?
- 17. jQuery.getJSON - Access-Control-Allow-Origin Problema
- 18. AuthComponent: diferencia entre allowedActions y allow()?
- 19. angular.js Chrome Access-Control-Allow-Origin
- 20. Sintaxis de Access-Control-Allow-Origin
- 21. Magento: paginate colección de productos filtrados
- 22. Magento: actualizar catálogos de productos más rápido
- 23. clasificación de la columna de la cuadrícula Magento
- 24. Magento - Magento actualización de 1.6.2 a 1.7.0.2
- 25. Cargando Magento child html fuera de Magento
- 26. Colección Magento no selecciona el atributo
- 27. ¿Cómo funcionan CORS y Access-Control-Allow-Headers?
- 28. Cómo agregar un encabezado Access-Control-Allow-Origin
- 29. jquery form validate no allow space for username field?
- 30. Access-Control-Allow-Origin en la extensión de cromo
Gracias por señalar addFieldToFilter - que condujo a la solución de manejo de fie NULL lds – leepowers
esto es realmente incorrecto, esto hará una comparación con un filtro vacío en lugar de un filtro nulo. – useless