Cake、複数のレコードをまとめて保存する。
CakePHP 1.3
テーブルの複数のレコードをまとめて保存する方法メモ。
まず普通にテーブルのモデルを作って。
<?php class Mytable extends AppModel { var $useTable = 'mytable'; var $alias = "Mytable"; var $primaryKey = "id"; // その他、諸々の設定 }
別のモデルに hasMany で持たせる。
<?php class EntryMyTable extends AppModel { var $useTable = false; var $hasMany = array( 'Mytable' => array( 'className' => 'Mytable', 'foreignKey' => false, 'conditions' => ......, ) ); }
Viewはこんな。
<?php echo $form->create(false, array('action' => '/saveurl/') ); ?> <?php for ( $i = 0; $i < 10; $i++ ){ ?> <?php echo $form->input("Mytable.$i.id", array("type" => "hidden","value" => h($i) ));?> <?php echo $form->input("Mytable.$i.col1", array("type" => "text"); ?> <?php } ?> <?php echo $form->end(array("label" => "submit")); ?>
でコントローラから
<?php $this->EntryMyTable->saveAll($this->data);
と、saveAll() メソッドで保存できた。
わーい。