skillup

技術ブログ

PHP

cakeでのJOINについて&session

投稿日:2016年3月10日 更新日:

cakeでのJOIN

cakePHPでは基本、hasManyなどの修飾子を使えば、リレーションをとることができますが、検索においてはこれだけで解決しないこともあります。

例えばブログの投稿情報(Post)とコメント(Comment)という関係があるとします。

単純化するためにPostはidのみ、Commentはidとpost_idのみだとします。

言うまでもなくPost(1)-Comment(N)です。

この場合cakePHPでPostに$hasMany=>Commentと書いてあげれば、Postデータを取得するときに、自動的にcommentも取れます。

ただ気を付けてほしいのはJOINではないということです。

SQLのログをみればわかりますが、

  1. 最初のPostだけを取得
  2. 次にwhere post_id in ( 実際のPOSTのIDの配列 )でCommentを取得

となります。

なぜなら単純にJOINした場合、Post1行に対し、Commentのレコード分の行数になってしまうからです。

以下のエントリーでこの種の問題を扱いました。

http://skill-up-engineering.com/?p=1275

それでは上記のケースでJOINしてもいい場合はどうすればいいかというとCakeにそもそもJOINをさせる命令があります。

ほとんどSQLに近くなっていますが、下記のようになります。

上記のようにしてあげればJOINをとることができます。

参考リンク

http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html

cakeでのsessionについて

JOINとは関係ないネタになってしまいますが、sessionの有効時間を変更したいときです。

下記のリンクであるようにbootstrap.phpに設定を書いてあげればOKです。

-PHP
-

執筆者:


comment

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

関連記事

no image

mb_convert_kanaによる半角濁点の処理

PHPネタです。 濁点を処理するときに、カナ本体と濁点が分離していることが多々あります。 一般的には濁点と文字自体を混合させるケースのほうが多いので統一する必要性があるでしょう。 これを1文字にまとめ …

no image

PHPでのメール送信&カレントディレクトリ

PHPの小ネタ集です。 Contents1 メールでの改行2 PHPでのカレントディレクトリ メールでの改行 メールで改行する場合、いつも\nでOKだったんですが、本日これで送信すると送れないというバ …

no image

アプリケーションアーキテクチャについて 〜ドメインモデルに関して〜

前回のトランザクションスクリプトパターンの反省から 今回はいわゆるドメインモデルの具体例に関して。 ドメイン駆動型設計には以下のような特徴があります。 大きく、アプリケーションの構成を以下のように分け …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

PHPでのログ出力 PHP monolog

PHPでデバッグするときは、画面上にvar_dumpで情報を見ていたのですが、これができない場面ではログへの出力を行うことになります。 いままではフレームワークに標準でついてたんですが、これを機に一般 …

アーカイブ