gpt4 book ai didi

php - Magento - 如何运行此自定义产品属性脚本

转载 作者:可可西里 更新时间:2023-10-31 23:38:55 24 4
gpt4 key购买 nike

我有一个关于 magento 属性的问题。我已经创建了一个自定义产品输入文本属性,它应该包含一个整数数据类型,但是,magento 将它存储为一个 varchar。我试图在 stackoverflow 中询问它,他们告诉我无法将产品属性类型从字符串更改为整数。

所以我的解决方案是创建一个自定义整数产品属性。我在谷歌上搜索了几天,发现一篇文章提供了一个创建自定义属性的脚本。 http://magentotutorialbeginners.blogspot.com/2014/03/create-product-attribute.html?showComment=1442885130592#c2319234413343201281

问题是我不知道如何运行或使用它。

问题:

这个脚本如何运行?你能给我一个关于分步过程的指南吗?

$installer = $this;
$installer->startSetup();
$installer->addAttribute('catalog_product', 'custom_mprice', array(
'input' => 'text',
'type' => 'int',
'label' => 'Enter Max Price',
'backend' => '',
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'searchable' => 0,
'filterable' => 0,
'sort_order' => 30,
'comparable' => 0,
'visible_on_front' => 0,
'visible_in_advanced_search' => 0,
'is_html_allowed_on_front' => 0,
'is_configurable' => 1,
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, ));
$installer->endSetup();

我的目标是创建此属性,以便我在小于或等于等算术表达式中使用它。

谢谢

最佳答案

您的收藏查询如下所示。

$collection = Mage::getModel('catalog/product')
->getCollection()
->addFieldTofilter($attr_name, array(
'eq' => Mage::getResourceModel('catalog/product')
->getAttribute($attr_name)
->getSource()
->getOptionId($attr_val)
))
->addAttributeToSelect('*')
->addFieldTofilter($metric, array('gteq' => $metric_val_min))
->addFieldTofilter($metric, array('lteq' => $metric_val_max))
->load();

您在问题中描述的问题存在于小于、大于过滤部分。

在这里,我将向您展示如何将 $metric 视为 sql 查询中的整数,从而使查询在您的情况下有效。

//create sql expression
$expr1 = 'CAST (' . $metric . ' AS UNSIGNED) >= ?';
$expr2 = 'CAST (' . $metric . ' AS UNSIGNED) <= ?';
$greaterEqCondtion = new Zend_Db_Expr($expr1);
$lesserEqCondition = new Zend_Db_Expr($expr2);

//applying filters which are relatively simple to express.
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('*')
->addFieldTofilter($attr_name, array(
'eq' => Mage::getResourceModel('catalog/product')
->getAttribute($attr_name)
->getSource()
->getOptionId($attr_val)
));

//now going to apply filters which is relatively complex in this case.
$collection->getSelect()
->where($greaterEqCondtion, $metric_val_min)
->where($lesserEqCondition, $metric_val_max);

//we are set, let us load collection
$collection->load();

这里 $collection->getSelect()->where() 保存了一个表达式。该表达式将使字符串值在 sql 查询中被视为整数。我没有测试这段代码。但你可以尝试一下。

如果您真的想继续使用新属性,那么您需要做的是创建一个新的设置资源或使用默认的 eav 设置资源 (Mage_Eav_Model_Entity_Setup)。关注 this tutorial 了解如何设置基于 EAV 的模型

关于php - Magento - 如何运行此自定义产品属性脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708330/

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