2013/06/22

[CakePHP2.x][PostgreSQL] ConnectionManagerで DBのテーブルとフィールド定義を取得してみる

Class Postgres | CakePHP http://api.cakephp.org/2.3/class-Postgres.html

// getDataSource
$db = ConnectionManager::getDataSource(string Model::$useDbConfig);
  →Model::$useDbConfig databaseの設定名 'default'とか
  →ModelObject->useDbConfigで取れる e.g. $this->Model->useDbConfig

// an array of tables in the database.
$tables = $db->listSources();

// Fields in table. Keys are name and type
$data = array();
foreach ($tables as $table) {
  $fields = $db->describe(strtolower($table));
  $data[$table] = $fields;
}

// $dataに テーブルとフィールドの定義が入る
Array
(
    [table_name] => Array
        (
            [id] => Array
                (
                    [type] => integer
                    [null] =>
                    [default] =>
                    [length] =>
                )
            [name] => Array
                (
                    [type] => string
                    [null] =>
                    [default] =>
                    [length] => 512
                )
            [update_id] => Array
                (
                    [type] => text
                    [null] =>
                    [default] =>
                    [length] =>
                )

            [regist_date] => Array
                (
                    [type] => datetime
                    [null] =>
                    [default] =>
                    [length] =>
                )
        )
)

[CakePHP2.x][Console][Shell] 基本構造 コンソールログ出力など

 参考)
 Console and Shells — CakePHP Cookbook v2.x documentation http://book.cakephp.org/2.0/ja/console-and-shells.html
 

その他参考)


CakePHP2.xでは Shellsの置き場は変わってる
      → app/Console/Command

    public function main() {
       // 標準出力
       $this->out('This is the standard log.');
       // 区切り線
       $this->hr();
       // 標準出力 改行なし
       $this->out('hogehoge......', false);
       $this->out('fugafuga.');
       $this->hr();
       // エラー出力
       $this->err('This is an error.');
       // エラーメッセージを出して 強制終了
       $this->error("Error Occurred!!!!", ">> stop the script.");
    }

#出力
Welcome to CakePHP v2.2.5 Console
---------------------------------------------------------------
App : app_hoge
Path: C:\workspace\app_hoge\
---------------------------------------------------------------
This is the standard log.
---------------------------------------------------------------
hogehoge......fugafuga.
---------------------------------------------------------------
This is an error.
Error: Error Occurred!!!!
>> stop the script.