【CakePHP】Controller内でテーブルをjoinする方法

こんちには、フリーの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()だけで結合する方法。

コメント

タイトルとURLをコピーしました