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チュートリアル(1) Symfonyの準備
 blogチュートリアル(2) データベースの設定 blogチュートリアル(2) データベースの設定
 blogチュートリアル(3) スキーマの定義とテーブルの生成 blogチュートリアル(3) スキーマの定義とテーブルの生成
 blogチュートリアル(4) 追加の設定 blogチュートリアル(4) 追加の設定
 blogチュートリアル(5) mod_rewriteについてと、初期表示の確認 blogチュートリアル(5) mod_rewriteについてと、初期表示の確認
 blogチュートリアル(6) モデルの作成 blogチュートリアル(6) モデルの作成
 blogチュートリアル(7) postモジュールの作成 blogチュートリアル(7) postモジュールの作成
 blogチュートリアル(8) ビューの作成 blogチュートリアル(8) ビューの作成
 blogチュートリアル(9) 記事の追加 blogチュートリアル(9) 記事の追加
 blogチュートリアル(10) データのバリデーション blogチュートリアル(10) データのバリデーション
 blogチュートリアル(11) 投稿記事の削除 blogチュートリアル(11) 投稿記事の削除
 blogチュートリアル(12) 投稿記事の編集 blogチュートリアル(12) 投稿記事の編集
 blogチュートリアル(13) ルーティング blogチュートリアル(13) ルーティング
 blogチュートリアル(14) まとめと応用 blogチュートリアル(14) まとめと応用
 
              
              日本語ドキュメント
Japanese Documents
 2011/01/18 Chapter 17 - Extending Symfony 2011/01/18 Chapter 17 - Extending Symfony
 2011/01/18 The generator.yml Configuration File 2011/01/18 The generator.yml Configuration File
 2011/01/18 Les tâches 2011/01/18 Les tâches
 2011/01/18 Emails 2011/01/18 Emails
 2010/11/26 blogチュートリアル(8) ビューの作成 2010/11/26 blogチュートリアル(8) ビューの作成
 
  
           
                