2012年10月27日土曜日

oil generate を少し試してみた #fuelphp

前に scaffold について書きましたが、もう少し試してみたいなと思って oil generate のドキュメント見ながらマイグレーションファイルについて調べてみました。
メモ程度に。

モデルとマイグレーションを一緒に作る
$ php oil g model article title:varchar[45] description:text
    Creating model: c:\workspace\fp-sample\fuel\app\classes\model\article.php
    Creating migration: c:\workspace\fp-sample\fuel\app\migrations\001_create_articles.php

生成されたマイグレーション
<?php

namespace Fuel\Migrations;

class Create_articles
{
    public function up()
    {
        \DBUtil::create_table('articles', array(
            'id' => array('constraint' => 11, 'type' => 'int', 'auto_increment' => true),
            'title' => array('constraint' => 45, 'type' => 'varchar'),
            'description' => array('type' => 'text'),
            'created_at' => array('constraint' => 11, 'type' => 'int'),
            'updated_at' => array('constraint' => 11, 'type' => 'int'),

        ), array('id'));
    }

    public function down()
    {
        \DBUtil::drop_table('articles');
    }
}


これを実行する場合は
$ php oil refine migrate

これでOK。データベースを確認すると articles というテーブルが作成されていると思います。
ちなみに生成されたマイグレーションファイルには up() と down() とがありますが、意味はそのままで up() は新しく変更される内容、down() は取り消し内容といったかんじになります。
一度実行したマイグレーションを取り消す場合にはこの down() を実行すればOK。
$ php oil refine migrate:down

次に oil コマンドを入力したときは title と description しか宣言してないですが id, created_at, updated_at が自動的に生成されています。
id の消し方はわからなかったんですが(というかあるのかな??)、created_at と updated_at を消したい場合は --no-timestamp を付加してやります。
$ php oil g model article title:varchar[45] description:text --no-timestamp

created_at とか updated_at の名称を変更したい場合は
$ php oil g model article title:varchar[45] description:text --created-at=my_created --updated-at=my_updated

マイグレーションはいらないって場合は --no-migration とするとOK。
$ php oil g model article title:varchar[45] description:text --no-migration


つぎに、マイグレーションだけが作りたいという場合は oil g migration で生成できるんですがこれは規定のプリフィックスにしたがってコマンドを入力します。

新規テーブル(postsテーブルを生成)
$ php oil g migration create_post title:varchar[45] description:text

テーブルのリネーム(postsテーブルをpagesにリネーム)
$ php oil g migration rename_table_posts_to_pages

フィールドの追加(pagesテーブルにユーザ情報:名前、年齢、性別を追加)
$ php oil g migration add_userinfo_to_pages name:varchar[45] age:int gender:varchar[10]

フィールド名の変更(pagesテーブルのnameをusernameに変更)
$ php oil g migration rename_field_name_to_username_in_pages

テーブルの削除(pagesテーブルの削除)
$ php oil g migration drop_pages


といったかんじ。
いろいろ書きましたが書いてることはドキュメントに載ってることなんで。
詳しくはやっぱりドキュメントを見たほうが役に立ちますね。


Generate - Oil Package - FuelPHP Documentation
http://docs.fuelphp.com/packages/oil/generate.html



0 件のコメント:

コメントを投稿