CakePHPで複数の値を保存する方法
CakePHPであるテーブルのデータをforeachですべて表示し、フォームから個々の値を一気にアップデートってよくあることだと思います。
たとえば、顧客リストがあって、顧客を一覧表示して、年齢を一気に修正したい場合です。
(同じ値を入れるではありません。個別の値です。)
ネイティブにPHPで書くとname="array[]"な感じなんですけど、Cakeでハマった。。。
全然できなかったんです。レベル低くてすいません・・・
悩みに悩んで以下の結果となりました。
if (!empty($this->data)) {
foreach($this->data as $data){
$this->Data->saveAll($data);
}
}
なんてことはない受け取った値を順番にforeachでまわしていく、大事なのはsaveAllってとこ
僕のやりたいことの場合saveではダメでした。まだ理解できてないなあ。。
もうひとつ大事なのはViewの方で
<?php foreach($data as $val => $key): ?>
<?php
echo $form->input('Data.{$val}.id',
array(
'type'=>'hidden',
'value'=> $key['Data']['id']
)), PHP_EOL;
?>
<?php endforeach; ?>
キーをモデルとそのIDの間に入れてやり、配列として渡してあげることです。
以上CakePHPで複数の値を一気に変更する方法でした。
この本にはかなり助けられてます。