saveAll()を使う時の注意

saveAll()を使うと複数のデータを一括で保存できます。
大変便利ですが、
セットするデータの形式に、注意が必要です。


CookBook記述

saveAll(array $data = null, array $options = array())

次のいずれかの目的で使用します。 (a) 単一のモデルに、個別のレコードを複数記録する。 (b) あるレコードと同様に、関連したレコードも全て記録する。

http://book.cakephp.org/ja/view/1031/Saving-Your-Data

基本は以上の通りですが・・・

単一のモデルに、個別のレコードを複数記録する場合

例えば、Userに複数のuser情報を一回で登録したい場合
1.第一引数は $data['User']
 save()では$dataで渡すので、ここ間違えやすい。


2.$data['User']以下に、整数以外のINDEXがあってはいけない
 CRSF対策などでTokenが入っている場合に注意。

関連するModelのデータもまとめて登録する場合

1.第一引数は $data
 上記、単一のモデルのみの場合と違うので注意。
 さらに、このルールがあるので、親になるモデル(この場合User)を同時に複数登録することはできません


2.関連するModelのデータに整数以外のINDEXがあってはいけない
 これはほぼ同上。