Posts

마젠토 객체의 데이터 불러오기

마젠토 getModel()과 getData()를 사용한 객체의 데이터 불러오는 방법

마젠토 객체의 데이터를 불러오는 방법입니다. getModel()과 getData()를 사용하며 마젠토의 객체를 불러오는 방식은 대부분 동일합니다.

마젠토에서는 객체를 불러올때 대체로 getModel() method를 사용하고 불러온 객체의 데이터를 가져올때 getData() method를 사용합니다.
method의 이름이 무엇을 할때 쓰이는지 이미 알려주듯이 사용법 또한 그리 어렵지 않습니다.
이번 포스팅에서는 객체를 불러와 객체를 아이디로 로드하는 방법, 그리고 객체내에 있는 데이터를 불러오는 방법을 보여드립니다.

예를들어 product 객체를 불러올때엔 아래와 같은 코드를 실행하시면 됩니다.

1
2
3
<?php
$product = Mage::getModel('catalog/product');
?>

한마디로 Mage_Catalog_Model_Product의 객체를 불러오는 것이며 getModel() 안에있는 ‘catalog/product’는 Mage_Catalog_Model_Product 를 나타냅니다.
Mage_Catalog_Model_Product는 /app/code/core/Mage/Catalog/Model/Product.php 에 위치하고 있으며 Mage_Catalog_Model_Abstract 에서 계승되어 내려온 클래스입니다.
다른 객체를 불러올때도 같은 방법을 사용하며 파일의 위치또한 같은 형식의 폴더안에 위치해 있습니다.

category 객체나 customer 객체를 불러올때도 같은 형식입니다.

1
2
3
4
<?php
$category = Mage::getModel('catalog/category');
$customer = Mage::getModel('customer/customer');
?>

category의 경우 Mage_Catalog_Model_Category의 객체를 불러오는 것이며 해당 파일은 /app/code/core/Mage/Catalog/Model/Category.php 에 위치해 있습니다.
customer의 경우 Mage_Customer_Model_Customer의 객체를 불러오는 것이며 해당 파일은 /app/code/core/Mage/Customer/Model/Customer.php 에 위치해 있습니다.

위와같이 product, category, customer 객체를 불러왔을때엔 그 객체 안에는 아직 아무것도 없고 객체를 사용해서 할수있는 일도 몇가지 안됩니다.
객체를 불러온 후에는 product_id, category_id 또는 customer_id를 사용해서 각각의 정보를 로딩해야 합니다.

아래는 product_id ‘3’을 가진 product를 $product에 로딩시킨후 로딩된 객체의 정보를 getData() method를 사용해서 프린트하는 코드입니다.
마젠토의 root 폴더에 임의의 파일을 만들어 아래 코드를 복사해서 실행시킬수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require_once "app/Mage.php";

$product = Mage::getModel('catalog/product')->load(3);
echo '<pre>'; // 어레이를 조금 보기 쉽게 하기 위해서...
print_r($product->getData());

// product의 이름 출력하는 방법
echo $product->getName();
echo $product->getData('name');
// product의 sku 출력하는 방법
echo $product->getSku();
echo $product->getData('sku');
// product의 가격 출력하는 방법
echo $product->getPrice();
echo $product->getData('price');
?>

print_r($product->getData()); 를 프린트 해 보시면 array 안에 product에 관련된 모든 attribute들이 데이터 형식으로 들어있는것을 볼수 있습니다.
그 데이터를 불러올때엔
$product->get{attribute 이름}(); 형식을 사용하면 되고,
$product->getData(‘{attribute 이름}’);의 형식도 사용 가능합니다.
다만 $product->get{attribute 이름}(); 의 경우 {attribute 이름}의 첫번째 알파벳은 대문자가 되어야 합니다.