Changeset 15692


Ignore:
Timestamp:
2007/09/13 12:53:39 (17 years ago)
Author:
nanasess
Message:

テーブル一覧を配列で返す関数を追加

Location:
branches/feature-module-update
Files:
4 edited

Legend:

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

    r15532 r15692  
    1515 * @package DB 
    1616 * @author LOCKON CO.,LTD. 
    17  * @version $Id$ 
     17 * @version $Id:SC_DB_DBFactory.php 15532 2007-08-31 14:39:46Z nanasess $ 
    1818 */ 
    1919class SC_DB_DBFactory { 
     
    109109     */ 
    110110    function sfGetColumnList($table_name) { return array(); } 
     111 
     112    /** 
     113     * テーブルを検索する. 
     114     * 
     115     * 引数に部分一致するテーブル名を配列で返す. 
     116     * 
     117     * @param string $expression 検索文字列 
     118     * @return array テーブル名の配列 
     119     */ 
     120    function findTableNames($expression) { return array(); } 
    111121} 
    112122?> 
  • branches/feature-module-update/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php

    r15532 r15692  
    102102        $arrColList = SC_Utils_Ex::sfswaparray($arrColList); 
    103103        return $arrColList["Field"]; 
     104    } 
     105 
     106    /** 
     107     * テーブルを検索する. 
     108     * 
     109     * 引数に部分一致するテーブル名を配列で返す. 
     110     * 
     111     * @param string $expression 検索文字列 
     112     * @return array テーブル名の配列 
     113     */ 
     114    function findTableNames($expression) { 
     115        $objQuery = new SC_Query(); 
     116        $sql = "SHOW TABLES LIKE ?"; 
     117        $arrColList = $objQuery->getAll($sql, array("%" . $expression . "%")); 
     118        $arrColList = SC_Utils_Ex::sfswaparray($arrColList, false); 
     119        return $arrColList[0]; 
    104120    } 
    105121 
  • branches/feature-module-update/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php

    r15532 r15692  
    1919 * @package DB 
    2020 * @author LOCKON CO.,LTD. 
    21  * @version $Id$ 
     21 * @version $Id:SC_DB_DBFactory_PGSQL.php 15532 2007-08-31 14:39:46Z nanasess $ 
    2222 */ 
    2323class SC_DB_DBFactory_PGSQL extends SC_DB_DBFactory { 
     
    110110        return $arrColList["attname"]; 
    111111    } 
     112 
     113    /** 
     114     * テーブルを検索する. 
     115     * 
     116     * 引数に部分一致するテーブル名を配列で返す. 
     117     * 
     118     * @param string $expression 検索文字列 
     119     * @return array テーブル名の配列 
     120     */ 
     121    function findTableNames($expression) { 
     122        $objQuery = new SC_Query(); 
     123        $sql = "   SELECT c.relname AS name, " 
     124            .  "     CASE c.relkind " 
     125            .  "     WHEN 'r' THEN 'table' " 
     126            .  "     WHEN 'v' THEN 'view' END AS type " 
     127            .  "     FROM pg_catalog.pg_class c " 
     128            .  "LEFT JOIN pg_catalog.pg_namespace n " 
     129            .  "       ON n.oid = c.relnamespace " 
     130            .  "    WHERE c.relkind IN ('r','v') " 
     131            .  "      AND n.nspname NOT IN ('pg_catalog', 'pg_toast') " 
     132            .  "      AND pg_catalog.pg_table_is_visible(c.oid) " 
     133            .  "      AND c.relname LIKE ?" 
     134            .  " ORDER BY 1,2;"; 
     135        $arrColList = $objQuery->getAll($sql, array("%" . $expression . "%")); 
     136        $arrColList = SC_Utils_Ex::sfswaparray($arrColList, false); 
     137        return $arrColList[0]; 
     138    } 
    112139} 
    113140?> 
  • branches/feature-module-update/test/class/db/SC_DB_DBFactory_Test.php

    r15532 r15692  
    1111 
    1212/** 
    13  * SC_DB_DBFactory のテストケース. 
     13 * SC_DB_DBFactory TestCase 
    1414 * 
    1515 * @package DB 
    1616 * @author LOCKON CO.,LTD. 
    17  * @version $Id$ 
     17 * @version $Id:SC_DB_DBFactory_Test.php 15532 2007-08-31 14:39:46Z nanasess $ 
    1818 */ 
    1919class SC_DB_DBFactory_Test extends PHPUnit_TestCase { 
     
    2222    // {{{ functions 
    2323 
     24    /* TODO 
    2425    function testSfGetDBVersion() { 
    2526        $dbFactory = SC_DB_DBFactory::getInstance(); 
     
    3637        } 
    3738    } 
     39    */ 
     40 
     41    function testFindTableNames() { 
     42        $dbFactory = SC_DB_DBFactory::getInstance(); 
     43        $objQuery = new SC_Query(DEFAULT_DSN, true, true); 
     44        $actual = $dbFactory->findTableNames("mtb_pre"); 
     45        $this->assertEquals("mtb_pref", $actual[0]); 
     46    } 
    3847} 
     48 
     49/* 
     50 * Local variables: 
     51 * coding: utf-8 
     52 * End: 
     53 */ 
    3954?> 
Note: See TracChangeset for help on using the changeset viewer.