Magento数据收集是magento开发中非常重要的因素,我们计划在此Blog上写更多数据收集文章,但是今天我们将仅涵盖产品数据收集。我们将介绍很少的示例,以帮助您了解Magento中产品数据收集的工作方式。
什么是数据收集?简而言之,数据收集就像选择查询以从数据库中获取数据一样。
让我们从非常基本的产品模型数据收集开始。
要从数据库中获取所有产品,您可以运行以下代码-:
$collection = Mage::getResourceModel('catalog/product_collection');
要么
$collection = Mage::getModel('catalog/product')->getCollection();
上面应该给你基本属性-
- 实体编号
- 属性集
- 类型编号
- 能见度
- 可销售
而且,如果您想获取集合中的更多信息或列,则可以使用addAttributeToSelect($ attribute,$ joinType = false)函数获取更多数据。让我们来看几个例子-
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('name')
->addAttributeToSelect('sku')
->addAttributeToSelect('description')
->addAttributeToSelect('price');
上面的收藏将获得基本信息以及名称,SKU,描述和价格。当您要获取集合中的特定属性而不是所有或基本信息时,应使用此属性。
如果要获取集合中的所有产品属性,则可以执行以下操作:
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('*');
现在,我们学习了如何使用集合运行选择查询,让我们看看如何使用集合向我们的选择查询添加过滤器或where子句。
要将过滤器添加到集合,我们具有addAttributeToFilter($ attribute,$ condition = null,$ joinType ='inner')或addFieldToFilter( $ attribute,$ condition = null )函数。让我们看看如何将它们用于我们的收藏中。
在下面的示例中,我们将获得所有产品类型为 -的产品:
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id',
Mage_Catalog_Model_Product_Type::DEFAULT_TYPE);
相当于
where type_id='simple'
在以下示例中,我们将获得所有产品类型简单且可见性是目录搜索的产品 -:
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id',
Mage_Catalog_Model_Product_Type::DEFAULT_TYPE)
->addAttributeToFilter('visibility',
Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH);
相当于
where type_id='simple' and visibility=4
在以下示例中,我们将获得所有产品类型为简单或可配置的产品 -
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id', array(
Mage_Catalog_Model_Product_Type::DEFAULT_TYPE,
Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE
));
相当于
where type_id='simple' or type_id='configurable'
以下是可在addAttributeToFilter函数中使用的其他过滤器的列表-:
- eq(=)
- neq(!=)
- 喜欢(喜欢)
- nlike(不喜欢)
- 在(在)
- 宁(不在)
- finset(find_in_set)
- 伊斯兰国)
- notnull(不为null)
- 空(为空)
- moreq(> =)
- gt(>)
- lt(<)
- gteq(> =)
- lteq(<=)
- 从(> =)–仅适用于日期
- 到(<=)–仅适用于日期
我们已经讨论过选择查询和过滤器。现在,我们将讨论如何对结果集进行排序。不用担心,我们也有称为addAttributeToSort( $ attribute,$ dir ='asc' )的函数。
让我们看看如何在集合中使用此功能
在以下示例中,我们将获得所有产品,这些产品的产品类型都很简单,并且结果集将按名称-排序:
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id',
Mage_Catalog_Model_Product_Type::DEFAULT_TYPE);
->addAttributeToSort('name', 'ASC');
相当于
where type_id='simple' order by name
在下面的示例中,我们将获得所有产品,这些产品的产品类型都很简单,并且结果集将按类型升序排序,然后按名称降序排序:
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id',
Mage_Catalog_Model_Product_Type::DEFAULT_TYPE);
->addAttributeToSort('type', 'ASC');
->addAttributeToSort('name', 'DESC');
相当于
where type_id='simple' order by type, name desc
希望本文对您有所帮助。请留下您的评论,让我们知道您的想法?