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

wordpressのドメイン移行

WordPressのドメイン以降を行いました。 まあ、このブログの直下にエンジニア集客用ブログをおいたんですがね・・・ http://skill-up-engineering.com/gachinko …

no image

Laravelの認証(独自テーブル仕様)

Laravelで独自の認証をしたいときに少々大変だったのでメモなどを。 *ディフォルトのテーブルはuserで認証項目もemailとpasswordと決まっています。 いじるところが色々ありまして、列挙 …

no image

PHP_CodeSnifferによるコードチェック

昨日の記事でphpmdという静的解析ツールを調査したんですが、それ以外にも規約にのっとっているかどうかコーディングをチェックできるツールはあります。 PHP_CodeSniffer https://g …

no image

APIに関して

RESTAPIのルーティングで気をつけることなんぞを。 直近のプロジェクトではRESTAPIを作ることが多かったんですが気をつけることなんぞを。 Contents1 仕様書はソースから2 ツール3 命 …

no image

アプリケーションアーキテクチャについて 〜既存のMVCに関して〜

今回はアプリケーションのルーター以降のアーキテクチャに関して。主にMVCなどについて説明したいと思います。 Contents1 MVC(Model,Controller,View)1.1 トランザクシ …