Beginner's Tutorial 3 モデルの編集
Learn symfony: a Beginner's Tutorial — SitePoint
オブジェクト部分を主に変更して、photo に対する tag 付けの機能を追加する。
今回のテーマはORM(オブジェクトリレーショナルマッピング)の威力を知るということだろう。
たとえば、tag に photo_id という項目があったら、勝手に関連づけしてくれる。だから、取得している photo オブジェクトの id を持った tag を全部取得するには、以下の一行でいい。
$tags = $photo->getTags();
また、
$tag->setPhoto($photo);
とすれば、
$tag->setPhotoId($photo->getId());
と等価か、それ以上。
というのも、photo オブジェクトが save されて id が割り振られていなくてもこれは有効だから。
あと、symfony のモデルでは __toString() もまあまあ重要。そのモデルの代表的な項目を返す関数として、ヘルパーなどでよく使われる。
モデルで、getTagsString を設定すると、アドミンジェネレーターの項目名で tags_string が使えるようになるのでこれまでと同じように項目追加。
display: [_photo, description, tags_string, created_at]
という案配。
こうしてみると、ビューだけでなくコントローラーの部分まで設定ファイルで決めてしまって、モデル部分だけ php で書いたとしてもプログラムとして成立していることがよくわかる。
今回は具体的なコード内容などは元記事をご覧ください。