古の技術と呼ばれることも多くなってきたCakePHPの記事です。
CakePHPを使った開発の際に躓いたポイントを解説しますぅ
Contents
概要
データ取得時に関連データを合わせて取得したい。関連データの取得時には条件に一致しないデータが
関連データを用いて取得条件を絞りこみ、関連データが条件に一致しない場合、親も取得しないようにしたい。
関連データの取得方法
CakePHPでのデータ取得はmatching
, innerJoinWith
を用いることで、SQLのJOINに類似した操作が実現できます。
これにより、特定の関連データに基づく厳密なデータフィルタリングが可能となります。
matchingはN:Nの関係性のときに強力な関数となるが、条件指定の際に思った挙動にならないため注意が必要。
MatchingとInnerJoinWith
対応表として以下の形になる。
matching | innerJoinWith | |
関連データの取得 | できる | できない |
関連データの条件指定 | できる | できる |
条件一致しない場合の挙動 | 空として | |
生成されるSQL | Inner Join | Inner Join |
使用どころ | N:Nの関係のときにとりあえず便利 | 関連データに基いて結果を計算したいとき使う (サブクエリとして取ったり… |