エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合の詳細ページの注意点

      2014/06/26

ID以外のカラムでアソシエーション

 

アソシエーションさせる際の注意点

 
CakePHPにおいて、Modelで「$primaryKey」を指定すると、個別の詳細ページを表示させる際のキーになるカラムが「$primaryKey」で指定したになりますので注意が必要、という記事になります。
 
 
また、下記の ID以外のカラムでテーブルのアソシエーション(テーブルの連携)をさせる場合の説明を下記のページで行いましたが、今回の記事は、下記の記事の続きとして書いています。
CakePHPの場合
 CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合
baserCMSの場合
 baserCMS ID以外のカラムでアソシエーション(連携)をさせる場合
 
※baserCMSは、CakePHP上で動いている CMSですので、基本的には CakePHPの仕様に則って動いているのですが、テーブルの連携の部分は若干処理が違うようでした。そのため、別々に記事を書いていますが、今回の処理はどちらでも同じ結果でしたので、記事を分けていません。
また、ソース自体は、CakePHPのものとして書いています。
 
 

アソシエーションさせるためのサンプルコード

 
通常、一覧ページには詳細ページへのリンクがあり、詳細ページへのリンクは「ID」を設定します。
 
具体的なリンクの記述は以下のようになります。
———————-

———————-
 
そして、受ける側の処理は、下記の様になります。
 
———————-

———————-
 
ですが、Modelで「$primaryKey = ‘sec_code’」を指定しているため、引数として IDの情報を渡しても何も表示されません。
(この場合だと「id」と「sec_code」が同じレコードは表示されますが。)
 
なぜなら、Modelで「$primaryKey = ‘sec_code’」と指定しているため、すべての処理の PrimaryKeyが「sec_code」になってしまっているからです。
 
そのため、リンクの設定の部分で下記の様に「id」の部分を「sec_code」に変えることで正しくリンクがされるようになります。
———————-

———————-
 
 
 
私はこのことには比較的早く気付いたものの、これまで使っていた処理をそのまま使って、エラーが表示されるでもなく、値が取得できないというのは結構焦りますね。
悩む原因の一つになるでしょう。
 
同じように悩む方の悩みが早く解消されることを祈りつつ...
 
 
 
【Cakephp 2.3・baserCMS テーブルの連携(アソシエーション)関連記事】
baserCMSでオリジナルのデータベースから情報を取得する場合
CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合
CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合の詳細ページの注意点
CakePHP 2.3 連携先のテーブルの項目で条件抽出する場合
CakePHP 2.3 テーブルの項目を演算した結果を条件として抽出する方法
baserCMS ID以外のカラムでアソシエーション(連携)をさせる場合

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

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

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。

CakePHP 2.3でファイルをアップロード・その2 ファイル名を乱数で設定

CakePHPのアップロードするファイル名を乱数で変更しセキュリティを高める方法を解説。

CakePHP3のCakeDC/Usersのログイン後のリダイレクトを設定解説
CakePHP3のCakeDC/Usersのログイン後のリダイレクトを設定解説

CakeDC謹製Usersプラグインの紹介。ログイン認証後にリダイレクトする先の設定方法についての解説と実運用するために必要なコツを解説。便利な仕組みも仕様の理解があって初めてうまく使いこなせる。

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合

ID以外のカラムでアソシエーション(連携)させるための考え方とサンプルソースを用いての説明を行っています。

CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説
CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説

WYSIWYGエディタであるCKEditor4をCDNを利用して簡単にCakePHP3に導入する方法とカスタマイズする方法を解説。CakePHP3にはページごとの振り分けを行うブロック化を利用する。

CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る

他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。

CakePHP 2.3 デバッグキット(DebugKit)超初心者向けフォロー講座

CakePHP初心者に向けてデバッグキット(DebugKit)のインストール方法、はまりポイントを解説。