teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2017/10/16 07:46

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -9,4 +9,15 @@
9
9
  ※通常、複数形なんですがモデル自体が単数形になっているので、単数形の可能性もあるかもしれません
10
10
  ※`subject_participant.participant_idx`も同じような感じかと
11
11
 
12
- CakePHPのマニュアルとしては、[BelongsToMany アソシエーションの保存](https://book.cakephp.org/3.0/ja/orm/saving-data.html#id18)が参考になると思います。
12
+ CakePHPのマニュアルとしては、[BelongsToMany アソシエーションの保存](https://book.cakephp.org/3.0/ja/orm/saving-data.html#id18)が参考になると思います。
13
+
14
+ **追記**
15
+ まずは、フォームの$this->request->getData()を使わず、以下の配列の値で保存できるかやってみたらどうでしょうか
16
+ ```
17
+ $data = [
18
+ 'subject_idx' => 1,
19
+ 'subject_equipments' => [
20
+ '_ids' => [1, 2, 3, 4]
21
+ ]
22
+ ];
23
+ ```

1

誤字

2017/10/16 07:46

投稿

popobot
popobot

スコア6588

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  回答依頼が来ていたので、分かる範囲で回答しますね...
2
2
 
3
- まず、コントローラ側の`$this->Subject->saveMany($subject)`は$this->Subject->save($subject)が正しいと思います。保存しようとしてるエンティティは1つだからです。アソシエーションを一緒に保存する場合でもsave()です。
3
+ まず、コントローラ側の`$this->Subject->saveMany($subject)`は`$this->Subject->save($subject)`が正しいと思います。保存しようとしてるエンティティは1つだからです。アソシエーションを一緒に保存する場合でもsave()です。
4
4
 
5
- 後は、テンプレート側も問題だと思います。Form->controlの第一引数であるフィールド名の指定の仕方は若干ややこしいです。
5
+ 後は、テンプレート側も問題だと思います。`$this->Form->control()`の第一引数であるフィールド名の指定の仕方は若干ややこしいです。
6
6
  * `subject.subject_idx`は、`subject_idx`でいいはずです。subject自身であれば、`subject.`を指定しません。
7
7
  * `subject_equipment.equipment_idx`は、`subject_equipments._ids`か`subject_equipment._ids`だと思います。
8
8
  ※`_ids`というのはIDのリストを意味する特別な単語です