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

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

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

no image

PHPでの画像トリミング&縮小

PHPにて画像のトリミング&縮小処理があったんで、メモ。 仕様は下記の通り 16:9の画像(解像度:5168×2907)を高さを維持して4:3にする。つまり横長だった画像比を変えるので、両サイドを取り …

no image

phpmdによるコードチェック

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

no image

拡張子の取得

PHPで配列を取得する場合、下記のメソッドで一気に取得できます。 pathinfo( ファイルパス,PATHINFO_EXTENSION ) いままで正規表現使ったり、explodeでやったりといろん …

no image

ob_startを使ったバッファリング出力

先日var_dumpの結果をログに出力したいときに検索すると下記のようなコードを書けばよいということがわかりました。

ob_start …

アーカイブ