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

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

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

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

Q&A

0回答

1258閲覧

CakePHP3のbelongsToのデータ一覧取得

ssk

総合スコア332

CakePHP

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

0グッド

0クリップ

投稿2017/03/09 17:24

######今ままのコード

PHP

1$query = $this->Datacklists->find('all') 2 ->select([ 3 'id','dal01','dal02','dal03','dal04','dal05','dal06','dal07','dal08','dal09','dal10','dal12','dal13','dal14','dal17', 4 'dal15' => 'group_concat(DISTINCT Daldata15s.name SEPARATOR ";")', 5 'dal16' => 'group_concat(DISTINCT Daldata16s.name SEPARATOR ";")' 6 ]) 7 ->join([ 8 'table' => 'Dalcheckbox15s', 9 'type' => 'LEFT', 10 'conditions' => 'Dalcheckbox15s.datacklists_id = Datacklists.id', 11 ]) 12 ->join([ 13 'table' => 'Daldata15s', 14 'type' => 'LEFT', 15 'conditions' => 'Daldata15s.dal15_id = Dalcheckbox15s.dal15_id', 16 ]) 17 ->join([ 18 'table' => 'Dalcheckbox16s', 19 'type' => 'LEFT', 20 'conditions' => 'Dalcheckbox16s.datacklists_id = Datacklists.id', 21 ]) 22 ->join([ 23 'table' => 'Daldata16s', 24 'type' => 'LEFT', 25 'conditions' => 'Daldata16s.dal16_id = Dalcheckbox16s.dal16_id', 26 ]) 27 28 ->where(['status' => 1]) 29 ->group(['Datacklists.id']) 30 ->order(['Datacklists.id' => 'DESC']);

######うまくいかない所(アソシエーション後)

PHP

1$query = $this->Datacklists->find('all')->contain([ 2 'Daldata11s' => function ($q) { 3 return $q->select(['dal11' => 'group_concat(DISTINCT Daldata11s.name SEPARATOR ";")']); 4 }, 5 'Daldata15s' => function ($q) { 6 return $q->select(['dal15' => 'group_concat(DISTINCT Daldata15s.name SEPARATOR ";")']); 7 }, 8 'Daldata16s' => function ($q) { 9 return $q->select(['dal16' => 'group_concat(DISTINCT Daldata16s.name SEPARATOR ";")']); 10 } 11 ]) 12 13 14 ->where(['status' => 1]) 15 ->group(['Datacklists.id']) 16 ->order(['Datacklists.id' => 'DESC']);

######アソシエーション定義

PHP

1$this->belongsToMany('Daldata11s', [ 2 'joinTable' => 'dalcheckbox11s', 3 'foreignKey' => 'datacklists_id', 4 'targetForeignKey' => 'dal11_id', 5 ]); 6 7 $this->belongsToMany('Daldata15s', [ 8 'joinTable' => 'dalcheckbox15s', 9 'foreignKey' => 'datacklists_id', 10 'targetForeignKey' => 'dal15_id', 11 ]); 12 13 $this->belongsToMany('Daldata16s', [ 14 'joinTable' => 'dalcheckbox16s', 15 'foreignKey' => 'datacklists_id', 16 'targetForeignKey' => 'dal16_id', 17 ]);

コードばかりで申し訳ございません。
うまくいかない所(アソシエーション後)のコードがうまくいきません、、、

どのように書けば「今ままのコード」のような挙動になりますか?

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問