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