CartLogicで保持する商品情報

カートに入れた商品の各データを確認する場合、
//カートロジックを取得 $cart = CartLogic->getCart(); $items = $cart->getItems();
CartLogicのgetItemsで取得できます。
ここから各商品のデータを確認してみると、
object(SOYShop_ItemOrder)#88 (11) {
["id":"SOYShop_ItemOrder":private]=>
NULL
["orderId":"SOYShop_ItemOrder":private]=>
NULL
["itemId":"SOYShop_ItemOrder":private]=>
string(1) "5"
["itemCount":"SOYShop_ItemOrder":private]=>
int(3)
["itemPrice":"SOYShop_ItemOrder":private]=>
int(2100)
["totalPrice":"SOYShop_ItemOrder":private]=>
int(6300)
["itemName":"SOYShop_ItemOrder":private]=>
string(42) "アートフラワー置きものセット"
["cdate":"SOYShop_ItemOrder":private]=>
NULL
["isSended":"SOYShop_ItemOrder":private]=>
int(0)
["attributes":"SOYShop_ItemOrder":private]=>
NULL
["isAddition":"SOYShop_ItemOrder":private]=>
NULL
}
SOYShop_ItemOrderオブジェクトで入っており、
商品IDや商品名といったカートで確認できる最低限の商品情報と
購入の際に必要な数量と合計金額、商品オプション(attribute)の有無や加算オプション(isAddition)の有無の情報を保持しています。
orderIdのようなnullな値は注文完了時の注文IDが決定してから挿入されます。
(/soyshop/webapp/src/domain/order/SOYShop_ItemOrder.class.php)
カートの中で各商品の商品コードがほしいということがたまにあります。
こんな時は面倒ですが、
//わかりやすいように$itemOrders変数にカートに入っている商品情報を入れる
$itemOrders = $cart->getItems();
//$items変数の初期化
$items = array();//$items変数の初期化
//SOYShop_ItemDAOの呼び出し
$itemDao = SOY2DAOFactory::create("shop.SOYShop_ItemDAO");
foreach($itemOrders as $itemOrder){
//商品IDを取得する
$itemId = $itemOrder->getItemId();
try{
$item = $itemDao->getById($itemId);
}catch(Exception $e){
$item = new SOYShop_Item();
}
//商品データ格納用の配列に値を放り込む
$items[] = $Item;
}
途中で$itemの値を確認してみると
object(SOYShop_Item)#106 (20) {
["id":"SOYShop_Item":private]=>
string(1) "5"
["name":"SOYShop_Item":private]=>
string(42) "アートフラワー置きものセット"
["alias":"SOYShop_Item":private]=>
string(14) "goods-001.html"
["code":"SOYShop_Item":private]=>
string(9) "goods-001"
["saleFlag":"SOYShop_Item":private]=>
string(1) "0"
["price":"SOYShop_Item":private]=>
string(4) "2100"
["salePrice":"SOYShop_Item":private]=>
string(4) "2100"
["sellingPrice":"SOYShop_Item":private]=>
string(4) "2100"
["stock":"SOYShop_Item":private]=>
string(1) "3"
["config":"SOYShop_Item":private]=>
string(222) "{省略}"
["_config":"SOYShop_Item":private]=>
NULL
["category":"SOYShop_Item":private]=>
string(1) "2"
["type":"SOYShop_Item":private]=>
string(6) "single"
["createDate":"SOYShop_Item":private]=>
string(10) "1396568164"
["updateDate":"SOYShop_Item":private]=>
string(10) "1397562203"
["openPeriodStart":"SOYShop_Item":private]=>
string(1) "0"
["openPeriodEnd":"SOYShop_Item":private]=>
string(10) "2147483647"
["detailPageId":"SOYShop_Item":private]=>
string(1) "3"
["isOpen":"SOYShop_Item":private]=>
string(1) "1"
["isDisabled":"SOYShop_Item":private]=>
string(1) "0"
}
SOYShop_Itemオブジェクトの形で取得でき、商品コードや在庫数といった詳細情報を取得できました。
//わかりやすいように$itemOrders変数にカートに入っている商品情報を入れる
$itemOrders = $cart->getItems();
//$items変数の初期化
$items = array();//$items変数の初期化
//SOYShop_ItemAttributeDAOの呼び出し
$attributeDao = SOY2DAOFactory::create("shop.SOYShop_ItemAttributeDAO");
foreach($itemOrders as $itemOrder){
//商品IDを取得する
$itemId = $itemOrder->getItemId();
try{
$attributes = $attributeDao->getByItemId($itemId);
}catch(Exception $e){
$attributes = array();
}
//取得したデータを確認する
var_dump($attributes);
}
SOYShop_ItemAttributeDAOで値を取得してみると、
array(3) {
["item_copy1"]=>
object(SOYShop_ItemAttribute)#138 (3) {
["itemId":"SOYShop_ItemAttribute":private]=>
string(1) "5"
["fieldId":"SOYShop_ItemAttribute":private]=>
string(10) "item_copy1"
["value":"SOYShop_ItemAttribute":private]=>
string(78) "アートフラワーをお部屋の飾りにひとつ、いかがですか?"
}
["item_copy2"]=>
object(SOYShop_ItemAttribute)#11 (3) {
["itemId":"SOYShop_ItemAttribute":private]=>
string(1) "5"
["fieldId":"SOYShop_ItemAttribute":private]=>
string(10) "item_copy2"
["value":"SOYShop_ItemAttribute":private]=>
string(0) ""
}
["item_copy3"]=>
object(SOYShop_ItemAttribute)#64 (3) {
["itemId":"SOYShop_ItemAttribute":private]=>
string(1) "5"
["fieldId":"SOYShop_ItemAttribute":private]=>
string(10) "item_copy3"
["value":"SOYShop_ItemAttribute":private]=>
string(0) ""
}
}
カスタムフィールドで設定した値が取得できます。
取得したいカスタムフィールドのフィールドIDを把握している場合は、
$attribute = $attributeDao->get($itemId, "item_copy1");
のように商品IDとフィールドIDでオブジェクトを取得できます。
詳しくは各種DAOクラスファイルをご覧ください。
SOY App開発の説明 SOY2DAOでデータベースを利用する1
(/soyshop/webapp/src/domain/以下のファイル)
2014.04.18 | Comments(0) | Trackback(0)
Comments
Trackbacks
トラックバック -