2012-05-01 11 views
2

私がCakePHPアプリケーションを書いているときの共通の仕事は、SQLファイルをタイプしてデータベースに書き込んで、bakeを実行して足場を生成することです。これは私がCakePHPで持っているごくわずかな不満の1つです。これによりMySQLに結びついています。コードを使ってより良い方法があるのだろうかと思います。例として、いくつかのフレームワークでは、私のモデルがデータ型と一緒に使用するカラムを定義し、管理インタフェースを介してコマンドを実行して、コード内の内容に基づいてデータベースを構築することができます。フレームワークの背後にあるデータベースがあれば、これを行います。CakePHPはモデルの_schema属性からデータベーステーブルを生成できますか?

CakePHP 2.xでこれを行う方法はありますか?モデルコードにデータベーススキーマを書き出し、必要なテーブルとカラムを自動的に生成するためのbakeのようなコマンドを実行します。

class Post{ 
    public $_schema = array(
    'title' => array('type'=>'text'), 
    'description' => array('type'=>'text'), 
    'author' => array('type'=>'text') 
); 
} 

が、私は、私はそこからどうなるのかを説明する例はない:料理本ドキュメントにダイビングした後、_schema attributeは私がやりたいようです。 _schema属性は異なる目的を果たしますか?どんな助けもありがとう!

答えて

9

$ _schema配列そのものからではありません。/APP/Config/Schemaにスキーマファイルschema.phpを作成して使用しています。

「cakeスキーマの作成」コマンドを実行すると、「スキーマファイルに基づいてテーブルを削除して作成する」ことができます。

私は、このようSTHとなります。

class YourSchema extends CakeSchema { 

    public $addresses = array(
     'id' => array('type' => 'integer', 'null' => false, 'default' => NULL, 'length' => 10, 'key' => 'primary'), 
     'contact_id' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 10), 
     'type' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 2), 
     'status' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 2), 
     'email' => array('type' => 'string', 'null' => false, 'default' => NULL, 'length' => 50, 'collate' => 'utf8_unicode_ci', 'comment' => 'redundant', 'charset' => 'utf8'), 
     'created' => array('type' => 'datetime', 'null' => false, 'default' => NULL), 
     'modified' => array('type' => 'datetime', 'null' => false, 'default' => NULL), 
     'indexes' => array('PRIMARY' => array('column' => 'id', 'unique' => 1)), 
     'tableParameters' => array('charset' => 'utf8', 'collate' => 'utf8_unicode_ci', 'engine' => 'MyISAM') 
    ) 

    // more tables... 
} 
+0

コントローラから焼くコマンドを実行する方法は? – Anupal

+0

あなたのコンソールディレクトリはどこから実行しますか。 –

+1

いいえ、決してそれを行うことはありません。常にアプリのディレクトリから、比較的:Console/cake in 2.x。 3.xのビン/ケーキ(記載の通り)。 – mark