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

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

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

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

Q&A

1回答

1826閲覧

Cakephp3にてhasMany結合したDBの値が取得できない

oohanabi

総合スコア10

CakePHP

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

0グッド

0クリップ

投稿2018/11/04 17:08

前提・実現したいこと

cakephp3にてhasOneとhasManyで結合されたDBの値を取得したいのですが
データベースエラーとなってしまい、期待した値を取得することが出来ない状態です。

該当のソースコード

テーブル構成
--School--
id 1、2
name schoolA、 schoolB

--Class--
id 1、2
name classA、classB

--Student--
id 1、2
name nameA、nameB
tell tellA、tellB

SchoolはhasOneでClassと繋がっています
ClassはhasManyでStudentと繋がっています

以下の形でClassに紐付くStudentのnameをselectで取得したいと考えているのですが
データベースエラーが出てしまい値の取得が出来ません。
この場合、どのような記載を行えば目的の値を取得することが出来るようになるのでしょうか。

■試したコード(取得したいのはSchool,Class,Studentのname)
※以下のコードの場合、SchoolとClassのnameは取得できます。
※select内の'Class.Students.name'にてエラー
$DataArray = $this->Schools
->find()
->contain(['Class' => 'Students'])
->select(['name', 'Class.name', 'Class.Students.name'])
-<toArray();

■テーブルのデータを取得した場合、以下の階層でデータが格納されています
Array
(
[0] => School Object
(
[id] => 1
[name] => schoolA
[class] => Class Object
(
[id] => 1
[name] => classA
[student] => Array
(
[0] => Student Object
(
[id] => 1
[name] => nameA
[tell] => tellA
)
[1] => Student Object
(
[id] => 2
[name] => nameB
[tell] => tellB
)
)
)
)
)

プログラミングの経験が浅く、説明が拙い箇所がございますが
何卒ご教授いただけないでしょうか。

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

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

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

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

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

m.ts10806

2018/11/04 21:40

テーブル定義やコードなど見やすくするためにマークダウンの機能を活用してください。特にコードは再現確認に利用されます。code機能を利用しない場合、行頭のスペースが潰されたりと実際のコードと異なった状態となります(code機能で提示するとワンクリックでコピーできるようになります) エラーについては要約したり省略せずにそのまま質問本文に提示してください。
guest

回答1

0

× -<toArray();
○ ->toArray();

投稿2018/11/05 02:22

kunai

総合スコア5405

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問