本文整理汇总了PHP中SC_Query::setVal方法的典型用法代码示例。如果您正苦于以下问题:PHP SC_Query::setVal方法的具体用法?PHP SC_Query::setVal怎么用?PHP SC_Query::setVal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SC_Query
的用法示例。
在下文中一共展示了SC_Query::setVal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: lfRegistProduct
/**
* 商品登録を行う.
*
* FIXME: 商品登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
*
* @param SC_Query $objQuery
* SC_Queryインスタンス
* @param string|integer $line
* 処理中の行数
* @return void
*/
public function lfRegistProduct($objQuery, $line = '', &$objFormParam)
{
// 登録データ対象取得
$arrList = $objFormParam->getDbArray();
// 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、全て同一の時間になってしまう)
$arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line);
// 商品登録情報を生成する。
// 商品テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductColumn);
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductDefaultData($sqlval);
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$sqlval = $objQuery->extractOnlyColsOf($this->table, $sqlval);
if ($sqlval[$this->id_column] != '') {
// 同じidが存在すればupdate存在しなければinsert
$where = $this->id_column . ' = ?';
$product_exists = $objQuery->exists($this->table, $where, array($sqlval[$this->id_column]));
if ($product_exists) {
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->update($this->table, $sqlval, $where, array($sqlval[$this->id_column]));
} else {
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->insert($this->table, $sqlval);
// シーケンスの調整
$seq_count = $objQuery->currVal($this->seq_name);
if ($seq_count < $sqlval[$this->id_column]) {
$objQuery->setVal($this->seq_name, $sqlval[$this->id_column] + 1);
}
}
$product_id = $sqlval[$this->id_column];
} else {
// 新規登録
$sqlval[$this->id_column] = $objQuery->nextVal($this->seq_name);
$product_id = $sqlval[$this->id_column];
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->insert($this->table, $sqlval);
}
$objDb = new SC_Helper_DB_Ex();
// カテゴリ登録
if (isset($arrList['category_ids'])) {
if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) {
$objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column]));
$arrCategory_id = explode(',', $arrList['category_ids']);
$rank = 1;
foreach ($arrCategory_id as $category_id) {
$sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $category_id, "rank" => $rank++);
$sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2);
$objQuery->insert($this->categories_table, $sqlval2);
}
}
} elseif (count($this->arrCategory) == 1) {
if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) {
$objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column]));
$keys = array_keys($this->arrCategory);
$sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $keys[0], "rank" => 1);
$sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2);
$objQuery->insert($this->categories_table, $sqlval2);
}
}
}
示例2: restoreSequence
/**
* シーケンス生成器を復元する
* @param string $csv
* @param SC_Query $objQuery
*/
public function restoreSequence(&$objQuery, $csv)
{
// csvファイルからデータの取得
$arrCsvData = file($csv);
foreach ($arrCsvData as $line) {
list($name, $currval) = explode(',', trim($line));
if (in_array($name, $this->arrExcludeSequence, true)) {
continue 1;
}
// FIXME テーブルと同様に整合チェックを行う。また不整合時はスキップして続行する。
// XXX +1 ではなく、nextVal を呼ぶべきかも。
$objQuery->setVal($name, $currval + 1);
}
}
示例3: lfRegistProduct
/**
* 商品登録を行う.
*
* FIXME: 商品登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
*
* @param SC_Query $objQuery SC_Queryインスタンス
* @param string|integer $line 処理中の行数
* @return void
*/
public function lfRegistProduct($objQuery, $line = '', &$objFormParam)
{
$objProduct = new SC_Product_Ex();
// 登録データ対象取得
$arrList = $objFormParam->getDbArray();
// 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、全て同一の時間になってしまう)
$arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line);
// 商品登録情報を生成する。
// 商品テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductColumn);
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductDefaultData($sqlval);
if ($sqlval['product_id'] != '') {
// 同じidが存在すればupdate存在しなければinsert
$where = 'product_id = ?';
$product_exists = $objQuery->exists('dtb_products', $where, array($sqlval['product_id']));
if ($product_exists) {
$objQuery->update('dtb_products', $sqlval, $where, array($sqlval['product_id']));
} else {
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
$objQuery->insert('dtb_products', $sqlval);
// シーケンスの調整
$seq_count = $objQuery->currVal('dtb_products_product_id');
if ($seq_count < $sqlval['product_id']) {
$objQuery->setVal('dtb_products_product_id', $sqlval['product_id'] + 1);
}
}
$product_id = $sqlval['product_id'];
} else {
// 新規登録
$sqlval['product_id'] = $objQuery->nextVal('dtb_products_product_id');
$product_id = $sqlval['product_id'];
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
$objQuery->insert('dtb_products', $sqlval);
}
// カテゴリ登録
if (isset($arrList['category_ids'])) {
$arrCategory_id = explode(',', $arrList['category_ids']);
$this->objDb->updateProductCategories($arrCategory_id, $product_id);
}
// 商品ステータス登録
if (isset($arrList['product_statuses'])) {
$arrStatus_id = explode(',', $arrList['product_statuses']);
$objProduct->setProductStatus($product_id, $arrStatus_id);
}
// 商品規格情報を登録する
$this->lfRegistProductClass($objQuery, $arrList, $product_id, $arrList['product_class_id']);
// 関連商品登録
$this->lfRegistReccomendProducts($objQuery, $arrList, $product_id);
}