CakePHPでHasManyのテーブルをカンマ区切りで取得(MySQL GROUP_CONCAT関数)

Modelのバーチャルフィールドに設定しちゃっておくとラク。

public $virtualFields = array(
 'tags' => '(select group_concat(Tag.name) from tags as Tag where Post.id = Tag.post_id)'
);

負荷とか考えて普段ははずしておきたい場合は動的に $Model->virtualFieldsは動的に変更できるのでその都度設定すれば問題なさそうです。

ただ、FIND_IN_SETでの検索が $Model->find() の ‘conditions’パラーメータでは実現できなかった。なにか方法あるのかなぁ。

今回は単純な Yearな数字だったたので 無理やり LIke %%で処理 (うーん。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です