1. 程式人生 > >Magento中getModel與getData方法結合使用獲取資訊

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_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方法檢索幾乎任何內容的方法,如果有哪裡表述不對或者有更好的方法的話歡迎大家提建議,分享!