sfGuardUserとプロファイルテーブルを関連づける
symfony 1.1を使っていた時に、sfGuardPluginについてのエントリーを書いた。sfGuardUserテーブルにはログインID、パスワードくらいしか情報が無くて、本名やメールアドレスなどのフィールドは別テーブルを作って1:1のリレーションをさせなければいけないという内容。
symfony 1.4でsfDoctrineGuardPluginでも基本コンセプトは一緒なんだけど、このページ(英語)に従ってやったら非常に簡単にできた。概略は以下の通り。
- schema.ymlにプロファイルテーブル(Profile)を追加し、sfGuardUserと関連づける
- sfGuardUserのfixtureを修正
- symfony doctrine:buildでテーブル、モデル、フォームを作成
- sfGuardUserAdminForm.class.phpを修正し、プロファイルのフォームも読み込む
- generator.ymlを少し修正
一点注意。多分、schema.ymlのsfGuardUserとProfileの外部キーの所で、onDelete: CASCADE が必要な気がする。
※その他、sfGuardPlugin関係のtipsをまとめたページがあった。というかこっちのページを先に見つけた。そこで、2つのテーブル(sfGuardUserとsfGuardUserProfile)を関連づける方法は書いてあったけど、1つの画面で編集できるようにする方法は載ってなかった。
■環境
symfony 1.4.3