CakePHPのmatchingで困った話

古の技術と呼ばれることも多くなってきたCakePHPの記事です。

CakePHPを使った開発の際に躓いたポイントを解説しますぅ

概要

データ取得時に関連データを合わせて取得したい。関連データの取得時には条件に一致しないデータが

関連データを用いて取得条件を絞りこみ、関連データが条件に一致しない場合、親も取得しないようにしたい。

関連データの取得方法

CakePHPでのデータ取得はmatchinginnerJoinWith を用いることで、SQLのJOINに類似した操作が実現できます。

これにより、特定の関連データに基づく厳密なデータフィルタリングが可能となります。

matchingはN:Nの関係性のときに強力な関数となるが、条件指定の際に思った挙動にならないため注意が必要。

MatchingとInnerJoinWith

対応表として以下の形になる。

matching innerJoinWith
関連データの取得 できる できない
関連データの条件指定 できる できる
条件一致しない場合の挙動 空として
生成されるSQL Inner Join Inner Join
使用どころ N:Nの関係のときにとりあえず便利 関連データに基いて結果を計算したいとき使う
(サブクエリとして取ったり…

 

Twitterでフォローしよう

読んでみーな
おすすめの記事