私はCakePHP 1.3を使用しています。新しいレコード(数〜数千)が新しい場合はループに挿入し、既存のレコードが既に存在する場合は更新しています。しかし、私が保存している方法は、レコードが既に存在するかどうかをチェックしません。代わりに、各レコードに主キー値を割り当てます。私が割り当てるこの ID は一意であることが保証されています。CakePHP は、この ID が存在しない場合は挿入し、存在しない場合は更新することを知っているようです。
ただし、正しい方法で行っているかどうかはわかりません。ループで新しいレコードを作成している場合は、ここを読みます。実行する必要があります。これは、各レコードが一意になることがわかっている他の関数で実装します。エラーなしで動作するように見えるため、ここでは行いません。また、各レコードの存在を確認する必要もありません。$this->create()
挿入または更新する各レコード配列にはid
、それぞれのテーブルの主キーを示すキーがあり、各配列には適切に関連付けられた 2 つのモデルのデータが含まれています。
例えば
$this->saveAll($myData);
Array
(
[MyModel] => Array
(
[id] => 123
[xyz] => ...
...
)
[MySecondModel] => Array
(
[id] => 789
[my_model_id] => 123
[qwe] => ...
...
)
)
私がやっていることはうまくいっていますか、それとも存在を確認し、必要に応じて を実行$this->create()
する必要がありますか?