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

相信很多和我一样新接触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_Modelclass>
                …
            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方法检索几乎任何内容的方法,如果有哪里表述不对或者有更好的方法的话欢迎大家提建议,分享!

你可能感兴趣的:(magento常用函数方法)