てきとう

ワーワーゆうとります

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日目だー。