skillup

技術ブログ

PHP

cakeでの多対多を含んだ検索に関して

投稿日:2016年2月22日 更新日:

cakeを使って多対多を実現する方法はこのエントリーで紹介しました。

が、多対多を含む検索をする場合は一筋縄ではいかず結構面倒くさいです。

通常cakeで検索を行う場合、

‘conditions’ =>[‘Item.id’ => 5]

などと書いてあげればOKです。

ただcakeでの多対多の場合、これが通用しません。

上記のケースである特定のtagを含んだitemを

‘conditions’ =>[‘Tag.id’ => 5]

のようにして取り出すことはできません。もちろんTagにnameなどの属性があって検索しようと思っても同様に駄目です。

cakeは多対多のテーブルを直接つなげてみているわけではないようです。

で、その場合、どうするかというとまず関連テーブルをみて、Tag.id=5となっているItem.idを検索し、whereinの要領で、検索を行います。

具体的には下記のようなソースになります。

ソース

参考リンク

CakePHP hasAndBelongsToMany でページング(SQL LIMIT)とかを設定する

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

cakePHPでのマイグレーション

開発を続けているとデータベースのカラムの構造が変更するってことはしょっちゅうですが、管理がいい加減だとメンバー間でテーブルの構造が変わっていたり、本番と開発で違ってくるなどのトラブルが続出します。 そ …

no image

phpdocument

今回はphpのdocument生成ツールについて。 Contents1 phpdocument1.1 インストール1.2 使い方1.3 参考リンク phpdocument https://www.ph …

no image

phpmdによるコードチェック

現在のプロジェクトですが、コードレビューなどをされる環境にはないため、一人で書いていると自然と規約とずれた書き方になっていることもあります。 規約通りに書こう、書こうと思っていてもなかなかその通りに書 …

no image

PHPの配列操作

ながらく放置してました・・・ PHPを久々にやったんですが、やっぱり配列の関数・ライブラリが充実している分、作業がサクサクすすみますね。配列の操作でいろいろと学ぶところがあったんで掲載します。 Con …

no image

テンプレートエンジンTwigについて

SmartyにかわるテンプレートエンジンとしてTwig(ツィッグ)を勉強中。 といってもテンプレートエンジンなので基本的なことはほとんど一緒っぽいですが。 Contents1 インストール2 基本的な …