DoctrineのModelクラスとTableクラスの違い
shema.ymlに色々書いてsymfony doctrine:build –modelを実行すると色々なクラスが自動的に生成される。lib/model/doctrine以下には、各モデル毎に[ModelName].class.phpと[ModelName]Table.class.phpという2つのクラスが生成される。
その2つの使い分けは何となくやってたんだけど、最近明快な答が載ったページ(英語)を見つけたのですっきりした。
まぁソースコードを見ればすぐ分かるんだけど、継承関係としては以下の通り。
- Doctrine_Record > sfDoctrineRecord > [ModelName]
- Doctrine_Table > [ModelName]Table
てことで、[ModelName]Tableの方は、テーブルからデータを取ってきたりする処理を記載して、取ってきたレコードに対する処理は[ModelName]クラスの方に記載する。