gpt4 book ai didi

magento - Magento:合并eq,在addAttributeToFilter中为null

转载 作者:行者123 更新时间:2023-12-04 13:54:06 26 4
gpt4 key购买 nike

我想与OR组合为“is null”和“eq” => array()

$collection->addAttributeToFilter('attributename', array('is' => null));
$collection->addAttributeToFilter('attributename', array(115,116));

但这是行不通的。

最佳答案

要将addAttributeToFilter()OR条件一起使用,您可以传递一个数组数组,如下所示:

$collection->addAttributeToFilter(
array(
array(
'attribute' => 'name_of_attribute_1',
'null' => 'this_value_doesnt_matter'
),
array(
'attribute' => 'name_of_attribute_2',
'in' => array(115, 116)
)
)
);
乍看之下,针对 NULL关键字进行过滤的定义可能看起来有些困惑,但是一旦您习惯了,它就非常简单。
Magento支持 string类型的两种过滤器类型,即 'null''notnull',用于与 NULL关键字进行比较。
请注意,即使您需要传递key => value对(因为使用了关联数组),当使用过滤器类型 'null''notnull'时,该值也始终会被忽略。
例子
var_dump(
Mage::getModel('catalog/product')
->getCollection()
->addFieldToFilter(
array(
array(
'attribute' => 'description',
'null' => 'this_value_doesnt_matter'
),
array(
'attribute' => 'sku',
'in' => array(115, 116)
)
)
)
->getSelectSql(true)
);
转储的输出可能会因您的商店配置(属性ID,商店数量等)而异,但 OR子句中的 WHERE逻辑应始终保持不变:
SELECT 
`e`.*,
IFNULL(_table_description.value, _table_description_default.value) AS `description`
FROM
`catalog_product_entity` AS `e`
INNER JOIN
`catalog_product_entity_text` AS `_table_description_default` ON
(_table_description_default.entity_id = e.entity_id) AND
(_table_description_default.attribute_id='57') AND
_table_description_default.store_id=0
LEFT JOIN
`catalog_product_entity_text` AS `_table_description` ON
(_table_description.entity_id = e.entity_id) AND
(_table_description.attribute_id='57') AND
(_table_description.store_id='1')
WHERE (
(IFNULL(_table_description.value, _table_description_default.value) is NULL) OR
(e.sku in (115, 116))
)

关于magento - Magento:合并eq,在addAttributeToFilter中为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7320690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com