/** * SC_Queryインスタンスに設定された検索条件を元に並び替え済みの検索結果商品IDの配列を取得する。 * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 商品IDの配列 */ public function findProductIdsOrder(&$objQuery, $arrVal = array()) { $table = 'dtb_products AS alldtl'; if (is_array($this->arrOrderData) and $objQuery->order == '') { $o_col = $this->arrOrderData['col']; $o_table = $this->arrOrderData['table']; $o_order = $this->arrOrderData['order']; $objQuery->setOrder("T2.{$o_col} {$o_order}"); $sub_sql = $objQuery->getSql($o_col, "{$o_table} AS T2", 'T2.product_id = alldtl.product_id'); $sub_sql = $objQuery->dbFactory->addLimitOffset($sub_sql, 1); $objQuery->setOrder("({$sub_sql}) {$o_order}, product_id"); } $arrReturn = $objQuery->getCol('alldtl.product_id', $table, '', $arrVal); return $arrReturn; }
/** * SC_Queryインスタンスに設定された検索条件をもとに対象商品数を取得する. * * 検索条件は, SC_Query::setWhere() 関数で設定しておく必要があります. * * @param SC_Query $objQuery SC_Query インスタンス * @param array $arrVal 検索パラメーターの配列 * @return array 対象商品ID数 */ function findProductCount(&$objQuery, $arrVal = array()) { $table = <<<__EOS__ dtb_products AS alldtl JOIN dtb_product_categories AS T2 ON alldtl.product_id = T2.product_id JOIN dtb_category ON T2.category_id = dtb_category.category_id __EOS__; $objQuery->setGroupBy('alldtl.product_id'); $sql_base = $objQuery->getSql('alldtl.product_id', $table); return $objQuery->getOne("SELECT count(*) FROM ( {$sql_base} ) as t", $arrVal); }
/** * 全件取得 */ function getAll(SC_Query $objQuery = NULL) { if ($objQuery == null) { $objQuery =& SC_Query_Ex::getSingletonInstance(); } $this->setSelect($objQuery->getSql("*", $this->table)); if (strlen($this->order) == 0) { if (GC_Utils_Ex::isFrontFunction()) { $this->setOrder("device_name DESC"); } else { $this->setOrder("device_id DESC"); } } return $objQuery->getAll($this->getSql(2), $this->arrWhereVal); }