データをシリアライズしてDBに一時保存する
前回(CakePHPでCSVをアップロードしてDB更新 - 新しいフォルダー)
の続き。
CSVをアップロードするときに変更点を確認する画面を作る。
画面遷移としては
CSVを選択・アップロード → 確認画面 → 完了画面
となる。
その場合に、最初にアップロードされたCSVのデータをどう持ち回るか思案。
結果的に一時保存用のDBを作り、そこにsession_idをKEYにしたシリアライズしたデータをぶっこみました。
CREATE TABLE `tmp_upload` (
`session_id` varchar(64) NOT NULL DEFAULT '',
`table_name` varchar(32) DEFAULT NULL,
`value` text,
PRIMARY KEY (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
消すことを考えた場合、有効期限用の日付カラムを作り
アップロードの処理をする前に上記のテーブルの期限切れデータを消す処理を走らせる事で不要カラムを消すことができる。
$serializeData = serialize($updateItemData);
//一時保存
$this->TmpUpload->set(array(
'session_id' => session_id(),
'table_name' => $tableName,
'value' => $serializeData
));
$this->TmpUpload->save();//確認画面用のViewに必要なデータを渡す
$this->set('tableName', $tableName);
$this->set('columnName', $columnName);
$this->set('tableDatas', $changeColumns);
確認画面のSUBMITを受け取ったら
session_idをKEYにレコードを取得し、アンシリアライズ後にデータの更新を行う。