新しいフォルダー

気になったことや勉強したことについて書いていきます

データをシリアライズして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にレコードを取得し、アンシリアライズ後にデータの更新を行う。