こんちには、フリーのITエンジニアでWeb(PHP:Laravel)のバッグエンドをメインにフルリモートでお仕事させて頂きながら、個人開発でiOSアプリを作っているMoritaです。
CakePHPで保守作業をしていると、共通で使用されているプラグインを使ってテーブルからデータを取得していることがあります。
そのプラグインから取得しているテーブルに別のテーブルをjoinさせたい場合、
プラグインに手を加えるわけにはいかないのでControllerでjoinをさせたいですよね。
joinメソッドを使用する
$query = $articles->find()
->join([
'table' => 'comments',
'alias' => 'c',
'type' => 'LEFT',
'conditions' => 'c.article_id = articles.id',
]);
table=joinするテーブル
alias=エイリアス(c.id、c.nameなどのテーブル名を別の名前にできる)
type=Inner、LEFT、RIGHTなどの結合条件
conditions=結合するカラム
まとめ
joinする方法には以下、2つの方法があります。
その時の状況に応じて選択しましょう。
1.Tableにアソシエーション(belongsTo等)を使用して、Controllerでcontainすることで結合する方法。
2.今回のようにControllerでfind()->join()だけで結合する方法。
コメント