symfony1.2でDoctrine1.1使ってJobeetチュートリアル5日目

躓いたとこをメモ
svnリポジトリの内容が、Propel仕様だった
12/13 追記(getObject問題解決)

lib/model/JobeetJob.phpを開きましょう?

lib/model/doctrine/JobeetJob.class.php

ですね、わかります。

# apps/frontend/config/routing.yml
job_show_user:
  url:     /job/:company_slug/:location_slug/:id/:position_slug
  class:   sfDoctrineRoute
  options: { model: JobeetJob, type: object }
  param:   { module: job, action: show }
  requirements:
    id: \d+
    sf_method: [GET]

options:行で、JobeetJobテーブルと関連付けしているので、
url:行の、:company_slug, :location_slug, :id, :position_slugはそれぞれ、
lib/model/doctrine/JobeetJob.class.php
getCompanySlug, getPositionSlug, getId, getLocationSlugメソッドを呼んで値を得る。
この内、getIdメソッドはもうあるので、その他のメソッドを定義してやる。

company_slugなんてカラムねーよ

無事、ハイフン繋ぎでURL作成できて、executeShowでgetObject使おうねって言うから使ったらこれだよ。
company_slugは、ハイフン繋ぎにするための疑似カラムだから、実際には無いカラムなのにgetObject呼んだら、それでクエリー作ってる。他の_slugカラムも同様。


symfony-1.2.1にアップグレードしてキャッシュ消したら、問題なく動作しました。

// symfony-1.2.1にアップグレード
pear upgrade symfony/symfony-1.2.1

先にキャッシュ消しとくべきだった
symfony ccしたら
Unable to write cache file的なエラー。書き込み権限無いのが原因なんで

// パーミッション変更
chmod -R 777 cache
symfony cc


getObjectでけた!