【CakePHP】saveについて(saveFieldとsaveMany)

2019年7月29日

バージョン:CakePHP 2.x

普段、saveAll()かSQLを直接書いてquery()を使っているけど、他にどんな保存方法があるか調べてみた。

1.saveField()
単一のフィールドを保存する時に使う。

2.saveMany()
同じモデルの複数レコードをまとめて保存することができる。

3.saveAssociated()
複数のアソシエーションを含めたデータを一度に保存できる。
(オプションのdeepをtrueを指定して、より深い階層のアソシエーションデータも保存できる。デフォルトはfalse)

簡単にまとめると上記の通りです。
それで、saveAll()はどうゆうものかというと、下記のように書いてありました。

引用:CakePHP公式サイト

saveAll は saveMany と saveAssociated のラッパーです。このメソッドはデータ内容をみて、 saveMany か saveAssociated のどちらを使うのかを決定します。データの添字が数値であれば saveMany を、それ以外は saveAssociated を呼び出します。
このメソッドは、前に説明した2つのメソッド(saveManyとsaveAssociated)と互換性があり、同じオプション引数をとります。場合によって、 saveMany または saveAssociated を使ったほうがいいこともあります。

結局のところsaveAll使っておけば大丈夫そうだけど、場合によってはsaveMany、saveAssociatedを使った方が良いらしい。
どうゆうときに必要になるのかがわからないですが、、、

普段はsaveAll使って、パフォーマンス上げたい時はSQL書いちゃえというのが今のところの結論で!

詳しくは公式サイトをご覧下さい。

スポンサーリンク