/** * 商品IDを指定し、商品一覧を取得する * * Query::setOrder() や Query::setLimitOffset() を設定して, 商品一覧 * の配列を取得する. * FIXME: 呼び出し元で設定した、Query::setWhere() も有効に扱いたい。 * * @param Query $objQuery Query インスタンス * @param array $arrProductId 商品ID * @return array 商品一覧の配列 (キー: 商品ID) */ public function getListByProductIds(Query &$objQuery, $arrProductId = array()) { if (empty($arrProductId)) { return array(); } $where = 'alldtl.product_id IN (' . Utils::repeatStrWithSeparator('?', count($arrProductId)) . ')'; $where .= ' AND alldtl.del_flg = 0'; $objQuery->setWhere($where, $arrProductId); $arrProducts = $this->lists($objQuery); // 配列のキーを商品IDに $arrProducts = Utils::makeArrayIDToKey('product_id', $arrProducts); // Query::setOrder() の指定がない場合、$arrProductId で指定された商品IDの順に配列要素を並び替え if (strlen($objQuery->order) === 0) { $arrTmp = array(); foreach ($arrProductId as $product_id) { $arrTmp[$product_id] = $arrProducts[$product_id]; } $arrProducts =& $arrTmp; unset($arrTmp); } // 税込金額を設定する $this->setIncTaxToProducts($arrProducts); return $arrProducts; }
/** * 商品情報を取得する(vw_products_allclass使用) * * @param Query $objQuery DB操作クラス * @return array $arrProduct 取得結果を配列で返す */ public function lfGetProductsAllclass(&$objQuery) { // --- 商品一覧の取得 /* @var $objProduct Product */ $objProduct = Application::alias('eccube.product'); $objQuery->setWhere($objProduct->getProductDispConditions()); $objQuery->setOrder('product_id'); $arrProductLsit = $objProduct->lists($objQuery); // 各商品のカテゴリIDとランクの取得 $arrProducts = array(); foreach ($arrProductLsit as $key => $val) { $sql = ''; $sql .= ' SELECT'; $sql .= ' T1.category_id,'; $sql .= ' T1.rank AS product_rank,'; $sql .= ' T2.rank AS category_rank'; $sql .= ' FROM'; $sql .= ' dtb_product_categories AS T1'; $sql .= ' LEFT JOIN'; $sql .= ' dtb_category AS T2'; $sql .= ' ON'; $sql .= ' T1.category_id = T2.category_id'; $sql .= ' WHERE'; $sql .= ' product_id = ?'; $arrCategory = $objQuery->getAll($sql, array($val['product_id'])); if (!empty($arrCategory)) { $arrProducts[$key] = array_merge($val, $arrCategory[0]); } } // 税込金額を設定する Application::alias('eccube.product')->setIncTaxToProducts($arrProducts); return $arrProducts; }