【PHP】CakePHP3で一括更新する方法
スポンサーリンク
CakePHP3で複数データを一括更新したかったので、調べました。
※バージョンはCakePHP3.6でした。
以下のように「patchEntities」と「saveMany」を使って実現できました。
※「patchEntity」ではなく「patchEntities」です。
// モデル読込み $testTables = TableRegistry::get('TestTables'); // データ取得 $testTableArray = $testTables->find()->where(['code' => 'abc'])->toArray(); // 更新データ作成 $updateDataArray = []; foreach ($testTableArray as $data) { $updateData = []; // 主キー $updateData['id'] = $data['id']; // 更新値 $updateData['status'] = 1; array_push($updateDataArray, $updateData); } // エンティティ作成 $entities = $testTables->patchEntities($testTableArray, $updateDataArray); // 一括更新 $result = $testTables->saveMany($entities);
更新データ作成のforeach内で、条件を付けてarray_pushすれば、
条件に該当するデータだけ更新することもできます。