CakePHP3で多対多テーブルからデータを取得する方法

CakePHP3で多対多のテーブルからデータを取り出す方法をめもめも 🙂

CakePHP3ではjoin関数を使う方法もあるようですが、
この記事ではCakePHP ORMクエリー関数を利用しています。

cakephp3-habtm.png

 今回は上記のようなDBを使います。

Model/Tableの定義

多対多の中間テーブルのinitializeにアソシエーションを定義します。

上記はPostsテーブルとTagsテーブルの中間テーブル、
PostTagsテーブルのModelです。
CakePHP2で使われていたhasAndBelongsToManyは、
belongsToに名前が変わったことに注意してください。

中間テーブルの利用

Controllerから中間テーブル、PostTagsテーブルを利用してみます。

上のコードでは、
変数datasの中にPostsテーブルとTagsテーブルを結合したデータが入ります。

下記のようにViewでデータを取り出せます。

参考