blogチュートリアル(3) スキーマの定義とテーブルの生成
スキーマの定義
symfonyでは、データベースのスキーマをsymfony内の設定ファイル(schema.yml)に記述し、この設定から、データベース内にテーブルを生成します。 config/doctrine/schema.yml
ファイルをエディタで開き、以下のように編集してください。
Post: actAs: Timestampable: columns: id: primary: true unsigned: true type: integer autoincrement: true title: type: string(50) body: type: string
CakePHPの場合はテーブル名に複数形(ブログチュートリアルでは「posts」)を使用するのに対し、symfonyでは単数形を使用することに注意してください。 また、スキーマの定義では、モデル名にはキャメルケース、カラム名には小文字とアンダースコアを使って命名することに注意が必要です。 上記ではモデル名が「
Post
」、カラム名が「id
」「title
」「body
」です。
テーブルの生成
定義したスキーマに基づいてデータベースにテーブルを生成しましょう。コマンドラインでプロジェクトディレクトリ(sf_sandbox)へ移動し、以下のコマンドを実行します。
php symfony doctrine:build --all
確認プロンプトが表示されますので、「y」を入力してコマンドの実行を継続します。 メッセージの最後に以下のような行があれば、テーブルの生成が完了しています。
>> doctrine created tables successfully
phpMyAdminで、postテーブルが生成されているかどうか確認してみてください。
fixtureを使ったテストデータの投入
このチュートリアルで使用するテストデータもここで投入しておきましょう。 symfonyにはRuby on Rails由来のfixture機能があり、YAML形式で記述したテストデータを簡単にデータベースに投入できます。 data/fixtures/fixtures.yml
ファイルを開き、次のように編集してください。
Post: post1: title: タ<b>イ</b>トル body: これは、<br />記事の本文です。 post2: title: またタイトル body: そこに本文が続きます。 post3: title: タイトルの逆襲 body: こりゃ本当に面白そう!うそ。
ファイルの文字コードはUTF-8で保存してください。
ファイルを保存したら、プロジェクトのルートディレクトリで以下のコマンドを実行してください。
php symfony doctrine:data-load
このコマンドを実行すると、fixtureファイルに定義したデータがデータベースに投入されます。 phpMyAdminでpostテーブルにレコードが追加されているかどうか確認してください。
CakePHPの場合、先にCREATE TABLE文などにより手作業で直接データベースにテーブルを作成し、この情報をCakePHPが読み取って動作します。 symfonyの場合は、schema.ymlの設定を元に動作し、データベースのテーブルもスキーマファイルから生成されますので、CakePHPとは順序が逆になります。 ただし、データベースの既存のテーブル情報からschema.ymlを生成することも可能です。 『The symfony Reference Book タスク』を参照してください。
インデックス
Document Index
関連ページリスト
Related Pages
- blogチュートリアル(1) Symfonyの準備
- blogチュートリアル(2) データベースの設定
- blogチュートリアル(3) スキーマの定義とテーブルの生成
- blogチュートリアル(4) 追加の設定
- blogチュートリアル(5) mod_rewriteについてと、初期表示の確認
- blogチュートリアル(6) モデルの作成
- blogチュートリアル(7) postモジュールの作成
- blogチュートリアル(8) ビューの作成
- blogチュートリアル(9) 記事の追加
- blogチュートリアル(10) データのバリデーション
- blogチュートリアル(11) 投稿記事の削除
- blogチュートリアル(12) 投稿記事の編集
- blogチュートリアル(13) ルーティング
- blogチュートリアル(14) まとめと応用
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成