jobeet7日目メモ
突然だけど7日目
参考:Practical symfony 7日目 カテゴリページで遊ぶ
symfony始めたばかりなので、チュートリアルのjobeetを進めています。今のところ無事に進んでたんだけど7日目で「あれー?」ってなったのでメモ。
- 求人の category モジュールの作成
この slug カラムは Doctrine の Sluggable ビヘイビアによって考慮されます。JobeetCategory モデルのビヘイビアを有効にすればすべてが考慮されます。
ということで言われた通りやる。
-
- config/doctrine/schema.yml
JobeetCategory: actAs: Timestampable: ~ Sluggable: fields: [name] columns: name: type: string(255) notnull: true
このactAsというのがdoctrineのビヘイビアだそうです。なるほどー。ymlやdoctrineについて勉強したほうがよさそう。
参考: The symfony and Doctrine book 4章 - スキーマファイル
slug は本当のカラムなので、JobeetCategory から getSlug() メソッドを削除する必要があります。
というわけでjobeetCategoryからgetSlugメソッドを削除
-
- jobeet/lib/model/doctrine/JobeetCategory.class.php
class JobeetCategory extends BaseJobeetCategory { (略) //こっから public function getSlug() { return Jobeet::slugify($this->getName()); } //ここまで削除 (略) }
データベースの更新
$ php symfony doctrine:build --all --and-load --no-confirmation
レコードを保存する際に slug カラムの設定は自動的に考慮されます。name フィールドの値を使ってスラッグはビルドされオブジェクトに設定されます。
との事なので期待して既存のDBを見た
mysql> select * from jobeet_category\G *************************** 1. row *************************** id: 1 name: Design created_at: 2012-06-22 14:12:33 updated_at: 2012-06-22 14:12:33 slug: NULL
slugフィールドは追加されたけど、NULLだ。なぜ。and-loadしたのに?
さっき走らせたbuildのオプションは
all | すべてをビルドしてDBをリセット |
and-load | fixturesデータを追加 |
no-confirmation | DBの削除を強制しない |
という事で、もしかしたら一回読んでるfixturesのデータはスルーされてるのかな?と思ってfixturesの場所を指定してみる。
$ php symfony doctrine:build --all --and-load='data/fixtures/' --no-confirmation
そしたら
mysql> select * from jobeet_category\G *************************** 1. row *************************** id: 1 name: Design created_at: 2012-06-22 16:36:01 updated_at: 2012-06-22 16:36:01 slug: design
無事に入った。のこりの課題も見ながらすすめたら無事カテゴリページのページャーが現れました。
次は8日目だー。