前回の質問でアソシエーションを利用した更新・新規追加を行っています。
何度やっても更新はされず、新規登録になってしまうため、ご教授いただきたいです。
PHP
1//edit.php 2echo $this->Form->input('dalcheckbox15s.0.dal15_id',[ 3・ 4・ 5・
PHP
1 $datacklist = $this->Datacklists->patchEntity($datacklist, $this->request->data,['associated' => ['Dalcheckbox15s']]);
PHP
1//debug($datacklist); 2'dalcheckbox15s' => [ 3 (int) 0 => object(Cake\ORM\Entity) { 4 5 'dal15_id' => (int) 1, 6 '[new]' => true, 7 '[accessible]' => [ 8 '*' => true 9 ], 10 '[dirty]' => [ 11 'dal15_id' => true 12 ], 13 '[original]' => [], 14 '[virtual]' => [], 15 '[errors]' => [], 16 '[invalid]' => [], 17 '[repository]' => 'Dalcheckbox15s' 18 19 } 20 ],
idを渡してあげればいいのでしょうか?
その場合、どのようにidを渡すのかも教えていただけると助かります。。
######少し前進
このように書くとid1が更新されました。
PHP
1foreach($this->request->data['dalcheckbox15s'][0] as $key => $value){ 2 $this->request->data['dalcheckbox15s'][0] = [ 3 'id' => 1, 4 'datacklists_id' => $id, 5 'dal15_id' => $value, 6 ]; 7 }
'id' => 1,
をテーブルから参照して動的に生成できれば、、、
#####追記
PHP
1//debug($datacklist) 2'[original]' => [ 3 'dalcheckbox15s' => [ 4 (int) 0 => object(Cake\ORM\Entity) { 5 6 'id' => (int) 1, 7 'datacklists_id' => (int) 22488, 8 'dal15_id' => (int) 1, 9 '[new]' => false, 10 '[accessible]' => [ 11 '*' => true 12 ], 13 '[dirty]' => [], 14 '[original]' => [], 15 '[virtual]' => [], 16 '[errors]' => [], 17 '[invalid]' => [], 18 '[repository]' => 'Dalcheckbox15s' 19 20 }, 21 (int) 1 => object(Cake\ORM\Entity) { 22 23 'id' => (int) 2, 24 'datacklists_id' => (int) 22488, 25 'dal15_id' => (int) 2, 26 '[new]' => false, 27 '[accessible]' => [ 28 '*' => true 29 ], 30 '[dirty]' => [], 31 '[original]' => [], 32 '[virtual]' => [], 33 '[errors]' => [], 34 '[invalid]' => [], 35 '[repository]' => 'Dalcheckbox15s' 36 37 } 38 ] 39 ],
'id' => (int) 1,
'id' => (int) 2,
この2つの情報を
'id' => 1,
のところに入れてあげればいいかと思うのですが
方法はございますか?
PHP
1$this->request->data['dalcheckbox15s'][0] = [ 2 'id' => 1, 3 'datacklists_id' => $id, 4 'dal15_id' => $value, 5 ];
######追記
アソシエーションした意味がないような気がすうのですが
下記で一旦全て削除してからインサートはできるようになりました。
PHP
1$i = 0; 2 foreach($dal15s as $key => $value){ 3 $this->request->data['dalcheckbox15s'][$i] = [ 4 'datacklists_id' => $id, 5 'dal15_id' => $value, 6 ]; 7 $i++; 8 } 9 $datacklist = $this->Datacklists->patchEntity($datacklist,$this->request->data);
やりたいことは、「CakePHP3で一括更新・新規追加を行う」なので、分かる方は助言いただけると幸いです。
よろしくお願いいたします。
######追記
アソシエーション定義
PHP
1$this->hasMany('Dalcheckbox15s', [ 2 'joinTable' => 'dalcheckbox15s', 3 'foreignKey' => 'datacklists_id', 4 'targetForeignKey' => 'dal15_id', 5 'joinType' => 'LEFT', 6 'saveStrategy' => 'replace', 7 ]);
回答1件
あなたの回答
tips
プレビュー