Ejemplo n.º 1
0
 /**
  * 商品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;
 }
Ejemplo n.º 2
0
 /**
  * 商品情報を取得する(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;
 }