« Migration 先のMySQLテーブル情報 | メイン | テーブル定義書の自動生成 その2 »

ethna

テーブル定義書の自動生成

MySQL の DESC 命令で、テーブル定義設計書を ethna で出力。当然MySQL依存。
class APPID_TABLEManager extends Ethna_AppManager{
    function &getMeta( $column=null ){
        $ethnadb =& $this->backend->getDB();
        $peardb  =& $ethnadb->db;
        $statment = "DESC tableName {$column}";
        $resultSet = $peardb->getAll( $statment, null, DB_FETCHMODE_ASSOC );
        if( PEAR::isError( $resultSet ) ){
            $message = $resultSet->getCode().':'.$resultSet->getMessage();
            Ethna::raiseWarning( $message );
        }
        return $resultSet;
    }
}
あとは、view で、
    $manager =& $this->backend->getManager( 'tableName' );
    $this->action_form->setApp( 'tableName', $manager->getMeta() );
とすれば、template で
<table border=1>
    <caption>tableName</caption>
    <tr>
        <th>項番</th>
        <th>列名</th>
        <th>データ型</th>
        <th>制約</th>
    </tr>
{foreach from=$app.tableName item=p key=c name=x}
    <tr>
        <td align=right>{$c}</td>
        <td align=left>{$p.Field}</td>
        <td align=left>{$p.Type}</td>
        <td align=left>
            {if 'PRI'==$p.Key}PRIMARY KEY{/if}
            {if 'auto_increment'==$p.Extra}AUTO_INCREMENT{/if}
            {if 'NO'==$p.Null}NOT NULL{else} {/if}
            {if ''!=$p.Default}DEFAULT {$p.Default}{else} {/if}
        </td>
    </tr>
{/foreach}
<table>
かなりベタ。

トラックバック

このエントリーのトラックバックURL:
https://www.remix.asia/cgi/mt/mt-tb.cgi/6549

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)