このサイトにはプロモーションが含まれます

CakePHPのmatchingで困った話

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

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

概要

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

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

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

 

関連データの取得方法

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

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

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

MatchingとInnerJoinWith

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

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

 

Twitterでフォローしよう

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