November 26, 2011

windows + xamppでFuelPHPのブログチュートリアル

oilコマンドの使用を前提にして書きます。
http://madroom-project.blogspot.com/2011/11/windows-xampp-fuelphpoil.html

以下を参考にさせて頂きました。というか、途中までは殆どそのままです。
FuelPHP のブログチュートリアル:
http://d.hatena.ne.jp/Kenji_s/20111109/1320827056


では、手順をメモ。


(1)
development環境なので、app/config/development/db.phpを修正。
return array(
    'default' => array(
        'type'   => 'mysql',
        'connection' => array(
            'hostname'  => 'localhost',
            'port'   => '3306',
            'database'  => 'fuel_sample_blog',
            'username'  => 'root',
            'password'  => '',
            'persistent' => false,
        ),
    ),
);
* DBのfuel_sample_blogは予め作成しておくこと。
(persistentって何だろう。。。)


(2)
$ php oil generate scaffold post title:string summary:varchar[250] body:text
を実行。以下が生成されました。
app/classes/model/post.php
app/migrations/001_create_posts.php
app/classes/controller/posts.php
app/views/posts/index.php
app/views/posts/view.php
app/views/posts/create.php
app/views/posts/edit.php
app/views/posts/_form.php
app/views/template.php


(3)
$ php oil refine migrate
を実行。
fuel_sample_blogにmigrationテーブルとpostsテーブルが作成されました。
app/config/migrations.phpも作成されました。(他にも何か作成される??)


(4)
Postsコントローラにアクセス。
"Add new Post"で登録。
"View"、"Edit"、"Delete"で表示、編集、削除。


(5)
$ php oil refine migrate:down
を実行すると、postsテーブルがDropされました。
その後、(3)を実行すると再作成されました。



ここからは実験的な内容です。



(6)
これだけだとあまり面白く無いので、試しに
app/migrations/002_create_posts.php
を作成。
(自動で作る方法もあるのかな??というか、たぶんこの方法は誤った方法なのだと思う。)
namespace Fuel\Migrations;

class Create_posts {

    public function up()
    {
        \DBUtil::add_fields('posts', array(
            'add_field' => array('type' => 'text'),
        ));
    }

    public function down()
    {
        \DBUtil::drop_table('posts');
    }
}
$ php oil refine migrate
を実行してみると、insertしたレコードはそのままに、add_fieldカラムが追加されました。
app/config/migrations.phpの内容も自動更新されるようです。


(7)
$ php oil refine migrate --version=1
を実行すると
Migrated app:default version: 1.
と表示されましたが、postsテーブルがDropされていました。

* app/migrations/001_create_posts.phpのdown()がコールされた??(version downのdown。か。)

この後、以下のコマンドがどれも上手くいきません。
$ php oil refine migrate
$ php oil refine migrate --version=1
$ php oil refine migrate --version=2
尚、migrationテーブルのversionは0になっていました。


(8)
app/migrations/002_create_posts.php
を削除して
$ php oil refine migrate
を実行すると、postsテーブルが再度作成されましたが、
当然、レコードは0件です。


(9)
備考。
app/migrations/002_create_posts.php
に"DBUtil::add_fields"と書きましたが、これは
fuel/core/classes/dbutil.phpを参考にしました。
他にも色々ありますね。

とりあえず、postsコントローラの内容を見ながら、
FuelPHPにおけるDB周りの作法の基本を学びたい。


参考:
http://docs.fuelphp.com/classes/database/introduction.html
http://press.nekoget.com/fuelphp_doc/general/migrations.html

No comments:

Post a Comment