Changeset 15236


Ignore:
Timestamp:
2007/08/08 16:00:34 (15 years ago)
Author:
nanasess
Message:

メソッド追加

Location:
branches/feature-module-update/data/class/db
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/feature-module-update/data/class/db/SC_DB_DBFactory.php

    r15233 r15236  
    6262     * DBのバージョンを取得する. 
    6363     * 
    64      * @param string $dsn データベース接続詞 
     64     * @param string $dsn データソース名 
     65     * @return string データベースのバージョン 
    6566     */ 
    66     function sfGetDBVersion($dsn = "") {} 
     67    function sfGetDBVersion($dsn = "") { return null; } 
    6768 
    6869    /** 
     
    7273     * @return string MySQL 用に置換した SQL 文 
    7374     */ 
    74     function sfChangeMySQL($sql) {} 
     75    function sfChangeMySQL($sql) { return null; } 
     76 
     77    /** 
     78     * テーブルの存在チェックを行う SQL 文を返す. 
     79     * 
     80     * @return string テーブルの存在チェックを行う SQL 文 
     81     */ 
     82    function getTableExistsSql() { return null; } 
     83 
     84    /** 
     85     * インデックスの検索結果を配列で返す. 
     86     * 
     87     * @param string $index_name インデックス名 
     88     * @param string $table_name テーブル名 
     89     * @return array インデックスの検索結果の配列 
     90     */ 
     91    function getTableIndex($index_name, $table_name = "") { return array(); } 
     92 
     93    /** 
     94     * インデックスを作成する. 
     95     * 
     96     * @param string $index_name インデックス名 
     97     * @param string $table_name テーブル名 
     98     * @param string $col_name カラム名 
     99     * @param integer $length 作成するインデックスのバイト長 
     100     * @return void 
     101     */ 
     102    function createTableIndex($index_name, $table_name, $col_name, $length = 0) {} 
     103 
     104    /** 
     105     * テーブルのカラム一覧を取得する. 
     106     * 
     107     * @param string $table_name テーブル名 
     108     * @return array テーブルのカラム一覧の配列 
     109     */ 
     110    function sfGetColumnList($table_name) { array(); } 
    75111} 
    76112?> 
  • branches/feature-module-update/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php

    r15233 r15236  
    5252        $sql = $this->sfChangeRANDOM($sql); 
    5353        return $sql; 
     54    } 
     55 
     56    /** 
     57     * テーブルの存在チェックを行う SQL 文を返す. 
     58     * 
     59     * @return string テーブルの存在チェックを行う SQL 文 
     60     */ 
     61    function getTableExistsSql() { 
     62        return "SHOW TABLE STATUS LIKE ?"; 
     63    } 
     64 
     65    /** 
     66     * インデックスの検索結果を配列で返す. 
     67     * 
     68     * @param string $index_name インデックス名 
     69     * @param string $table_name テーブル名 
     70     * @return array インデックスの検索結果の配列 
     71     */ 
     72    function getTableIndex($index_name, $table_name = "") { 
     73        $objQuery = new SC_Query("", true, true); 
     74        return $objQuery->getAll("SHOW INDEX FROM " . $table_name . " WHERE Key_name = ?", 
     75                                 array($index_name)); 
     76    } 
     77 
     78    /** 
     79     * インデックスを作成する. 
     80     * 
     81     * @param string $index_name インデックス名 
     82     * @param string $table_name テーブル名 
     83     * @param string $col_name カラム名 
     84     * @param integer $length 作成するインデックスのバイト長 
     85     * @return void 
     86     */ 
     87    function createTableIndex($index_name, $table_name, $col_name, $length = 0) { 
     88        $objQuery = new SC_Query($dsn, true, true); 
     89        $objQuery->query("CREATE INDEX ? ON ? (?(?))", array($index_name, $table_name, $col_name, $length)); 
     90    } 
     91 
     92    /** 
     93     * テーブルのカラム一覧を取得する. 
     94     * 
     95     * @param string $table_name テーブル名 
     96     * @return array テーブルのカラム一覧の配列 
     97     */ 
     98    function sfGetColumnList($table_name) { 
     99        $objQuery = new SC_Query(); 
     100        $sql = "SHOW COLUMNS FROM " . $table_name; 
     101        $arrColList = $objQuery->getAll($sql); 
     102        $arrColList = SC_Utils_Ex::sfswaparray($arrColList); 
     103        return $arrColList["Field"]; 
    54104    } 
    55105 
  • branches/feature-module-update/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php

    r15233 r15236  
    4949        return $sql; 
    5050    } 
     51 
     52    /** 
     53     * テーブルの存在チェックを行う SQL 文を返す. 
     54     * 
     55     * @return string テーブルの存在チェックを行う SQL 文 
     56     */ 
     57    function getTableExistsSql() { 
     58        return "  SELECT relname " 
     59             . "    FROM pg_class " 
     60             . "   WHERE (relkind = 'r' OR relkind = 'v') " 
     61             . "     AND relname = ? " 
     62             . "GROUP BY relname"; 
     63    } 
     64 
     65    /** 
     66     * インデックスの検索結果を配列で返す. 
     67     * 
     68     * @param string $index_name インデックス名 
     69     * @param string $table_name テーブル名(PostgreSQL では使用しない) 
     70     * @return array インデックスの検索結果の配列 
     71     */ 
     72    function getTableIndex($index_name, $table_name = "") { 
     73        $objQuery = new SC_Query("", true, true); 
     74        return $objQuery->getAll("SELECT relname FROM pg_class WHERE relname = ?", 
     75                                 array($index_name)); 
     76    } 
     77 
     78    /** 
     79     * インデックスを作成する. 
     80     * 
     81     * @param string $index_name インデックス名 
     82     * @param string $table_name テーブル名 
     83     * @param string $col_name カラム名 
     84     * @param integer $length 作成するインデックスのバイト長 
     85     * @return void 
     86     */ 
     87    function createTableIndex($index_name, $table_name, $col_name, $length = 0) { 
     88        $objQuery = new SC_Query($dsn, true, true); 
     89        $objQuery->query("CREATE INDEX ? ON ? (?)", array($index_name, $table_name, $col_name)); 
     90    } 
     91 
     92    /** 
     93     * テーブルのカラム一覧を取得する. 
     94     * 
     95     * @param string $table_name テーブル名 
     96     * @return array テーブルのカラム一覧の配列 
     97     */ 
     98    function sfGetColumnList($table_name) { 
     99        $objQuery = new SC_Query(); 
     100        $sql = "  SELECT a.attname " 
     101             . "    FROM pg_class c, pg_attribute a " 
     102             . "   WHERE c.relname=? " 
     103             . "     AND c.oid=a.attrelid " 
     104             . "     AND a.attnum > 0 " 
     105             . "     AND not a.attname " 
     106             . "    LIKE '........pg.dropped.%........' " 
     107             . "ORDER BY a.attnum"; 
     108        $arrColList = $objQuery->getAll($sql, array($table_name)); 
     109        $arrColList = SC_Utils_Ex::sfswaparray($arrColList); 
     110        return $arrColList["attname"]; 
     111    } 
    51112} 
    52113?> 
Note: See TracChangeset for help on using the changeset viewer.