質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

4459閲覧

id列以外同士でアソシエーション(hasMany)したい

pecchan

総合スコア555

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/03/14 19:31

cakePHP初学者です。
どうぞ宜しくお願い致します。

【現状】
「id」列ではなく「no」という名前の列でアソシエーションを試みましたが
親データしか取得出来ない状態です。

試験マスタと科目マスタがあり、
試験マスタ:1 科目マスタ:n (試験マスタ hasMany 科目マスタ)の関係です。

【試験マスタ定義】
テーブル名:exams
id INT ※オートナンバー 主キー
no CHAR(4)
name VARCHAR(120)

【科目マスタ定義】
テーブル名:subjects
id INT ※オートナンバー 主キー
exam_no CHAR(4)
no CHAR(1)
name VARCHAR(120)

【試験モデルに記述した内容】
public $name = 'Exam';

public $hasMany = array( 'Subject' => array( 'className'=>'Subject', 'foreignKey'=>'exam_no', 'conditions'=>'', 'order'=>'', 'limit'=>'', 'dependent'=>false ) )

上記で試験、科目それぞれにデータを入れてデバッグすると、
試験(Exam)のみ取得でき、科目(Subject)は空の配列で返ってきます。

noで紐づく科目も取得するにはどうすれば良いでしょうか?

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

試験モデルの主キーが「id」のままなので、「id」を元にデータを取得してしまっています。
試験モデルで「no」が主キーであると設定すれば、「no」で紐付いた情報を取得できます。

php

1class Exam extends AppModel { 2public $primaryKey = 'no'; 3... 4}

参考
Cookbook モデルの属性-primaryKey

投稿2016/03/15 05:23

Hiron

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pecchan

2016/03/15 08:51

参考まで付けていただいて有難う御座います。 勉強になりました。 無事に動作しました。有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問