今回はテーブルを2つ用意します。Symfonyはテーブルに関しては寛容で、Railsのような複数形の縛りはありません。
- ログインユーザ用:user
- 名簿用テーブル:meibo
表3:用意するテーブル
テーブルを作成するのにはテーブルの情報をSymfonyに知らせなければなりません。テーブルのスキーマ「apps/config/schema.yml」を以下のように編集します。編集時の注意点はtabを使わないことです。YAMLはtabを使うことができないので、必ずスペースを用いてください。symfonyではスペース2つ分が要素の階層をあらわします。
【apps/config/schema.yml】
propel:
user:
_attributes: { phpName: User }
id:
uname: varchar(255)
upass: varchar(255)
meibo:
_attributes: { phpName: Meibo }
id:
name: varchar(255)
address: longvarchar(255)
tel: integer
created_at:
次にモデルの作成を行います。コマンドプロンプトもしくはターミナル上で以下のコマンドを実行します。
php symfony propel-build-model
これでモデルが作成されました。apps/lib/model/以下にMeibo.php,MeiboPeer.php,User.php,UserPeer.phpの4つのファイルが作成されています。これらのファイルを元にSymfonyはテーブルとクラスのマッピングを行います。
php symfony propel-build-sql
次に、生成したSQLを実行します。
php symfony propel-insert-sql
これでテーブルが作成されました。では、実際にアプリケーションの土台を作成するためにScaffolding機能を用いて、モデルから自動生成してみましょう。
php symfony propel-generate-crud frontend meibo Meibo
ここでの書式は「propel-generate-crudアプリケーション名 → コントローラ名 → モデル名」という書式になっています。この例ではsf_sandboxのデフォルトのアプリケーション名であるfrontendにMeiboモデルを元に「meibo」というモジュールの土台を作るという意味になります。
ここまでコマンドばかり実行してきましたが、これでアプリケーションができたのか、実際に確認してみましょう。まず下記のコマンドを入力して、Symfonyのキャッシュをクリアにします。
php symfony cc
次に下記のURLにWebブラウザからアクセスしてみます。
http://あなたのサーバ/sf_sandbox/web/meibo
以下のような画面になれば簡単な名簿はでき上がりです。
図3:名簿の画面 (画像をクリックすると別ウィンドウに拡大図を表示します)
|