您的位置:首页 > 其它

Magento中getModel与getData方法结合使用获取信息

2017-11-05 10:55 393 查看
相信很多和我一样新接触magento的新手,在做项目的时候会经常遇到需要从数据库中获取一些信息的情况,可能刚接触的童鞋还不太熟练或者不太了解,那么本文将向您展示如何使用getModel,getData和getter方法检索几乎任何内容。 例如,假设您正在尝试检索产品名称,描述和价格等操作。首先你需要做的是获得产品型号:

$productModel = Mage::getModel('catalog/product');


通过调用
getModel('catalog / product')
,您将获得在
app/code/core/Mage/Catalog/Model/Product.php
中定义的
Mage_Catalog_Model_Product
类的实例。但是,Magento如何去准确的寻找所需要的class呢?

参数’catalog/product’的第一部分来自模块配置,通常和模块文件夹的名称相同。在app/code/core/Mage/Catalog/etc/config.xml,你会看到:

<config>
…
<global>
<models>
<catalog>
<class>Mage_Catalog_Model</class>
…
</catalog>
…
</models>
…
</global>
…
</config>


从这里,您可以看到所有名称以Mage_Catalog_Model开头的模型都在此模块的“模型”文件夹中定义。’catalog/product’的第二部分是告诉Magento在哪个文件中定义了类。在这种情况下,它是Product.php

现在我们有正确的模型,下一步是告诉我们的模型,应该加载哪个产品。这可以通过load($id)方法轻松完成:

$product = $productModel->load($id);


在这里的
$id
的位置您可以替换成你想要加载的产品的id。这里面使用load($id)查询的是对应ID的产品的相关信息,如果想要搜寻更多商品的信息可以使用”模型数据收集器(Model Collections)”如下:

$product = $productModel->getCollection();


基本所有的Magento模型都有个方法叫getCollection ,默认情况下它会返回系统中所有的数据。Magento的数据收集器Collection包含很多复杂的逻辑来处理数据,无论是否使用索引或缓存、EAV表等。

现在我们已经加载了我们想要的产品,有两种从对象中检索数据的方法:

$name = $product->getName(); //same as $product->getData('name');检索单个属性的值
$description = $product->getData('description'); // same as $product->getDescription();检索所有属性的值


这两种方法都可以得到您想要的产品的相关属性的信息。但是,就价格而言,就有点不同:

$price = $product->getPrice(); // same as $product->getData('price');
$finalPrice = $product->getFinalPrice();


如果我们的产品属于任何价格规则,这两个变量将具有不同的含义。变量
$price
将具有产品基准价格,当您编辑产品时,管理可见。而变量
$ finalPrice
将具有处理价格规则的价格,是经过处理规则得到的价格,可以作为一些应用价格来做一些处理操作时使用。

这就是我总结的一些关于getModel,getData和getter方法检索几乎任何内容的方法,如果有哪里表述不对或者有更好的方法的话欢迎大家提建议,分享!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐