[cakephp]saveしてuploadする

トランザクションを利用して、セーブ後の処理を同期させています。
//セーブ後アップロードします。
//セーブに失敗、アップロードに失敗した場合はロールバックします。
function SaveAndUploadFile($data,$dir,&$error=null) {
$dbo = $this->Model->getDataSource();
$dbo->begin($this->Model);
//データを保存
if (!$this->Model->save($data)) {
if(strstr($this->Model->getDbo()->error,'1062:')){
if(isset($error))$error="同一のファイルが存在します。";
}
}else{
if (!move_uploaded_file($data['field_name']['tmp_name'], $dir)){
if(isset($error))$error="ファイルの移動に失敗しました。";
}else{
//成功したら、セーブしたデータをコミット
$dbo->commit($this->Model);
return true;
}
}
//失敗したら、セーブしたデータをロールバック
$dbo->rollback($this->Model);
return false;
}



参考URL1:cakePHP - conditional save, can it be done?
参考URL2:cakephp 2.x トランザクション
このエントリーをはてなブックマークに追加

tag : cakephp 2.x save upload ファイル アップロード トランザクション commit rollback 戻す

Translation


プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ