(1)
(0)
(0)
(0)
Total: 1 CakePHP HABTMモデルの検索
HABTMで関連付けされたテーブルを検索条件に加えたい場合、一回のfindメソッドで取得しようとすると、joinの設定やグループ化で面倒な実装が必要になってきます。
データ量にもよりますが、
1)関連テーブルを先に検索し、ID配列を取得
2)ID配列を検索条件に追加
としたほうが簡単に実装できるケースが多そうです。
例として、以下のモデルを使って検証します。
(料理が複数の食材と関連付けされている)
料理テーブル(モデル名:Cooking)
- id
- name
- category_id食材テーブル(モデル名:Food)
- id
- name料理-食材関連付けテーブル(モデル名:CookingFood)
- id
- cooking_id
- food_id
料理のカテゴリID=3 AND 食材ID=5 で検索する場合では、
まず、関連付けテーブルから対応する食材を含む料理IDを取得します。
PHP:
次に、取得した料理IDのリストを検索条件に含めます。
PHP:
Paginateが必要な場合は、後半の部分を
PHP:
とすればOK。
サンプルの動作イメージはこちらになります。
サンプルのソースコードは こちらからダウンロードできます。
関連するその他の記事
Comments
Leave a Reply