ブログトップ
CartLogicで保持する商品情報
2014年04月18日
前回は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/以下のファイル)