【发布时间】:2021-09-13 21:47:34
【问题描述】:
我正在制作一个使用多个图像创建服务的表单,我不确定我是否正在做正确的处理失败的保存过程。
例如,如果我有 5 张图片并且已经上传了 3 张但在第 4 张图片中失败了,那么我需要取消保存过程并删除所有保存的文件。
$validatedImages = [];
foreach($images as $key => $image){
$imageName = ServiceImage::generateRecordName($image);
if(!$image->storeAs(ServiceImage::path(), $imageName)) {
// fall back all the stored files
foreach($validatedImages as $validatedImage)
Storage::delete(ServiceImage::path() . $validatedImage);
return redirect()->back()->with(['errorMsg' => 'There was a problem when uploading images']);
}
$validatedImages[] = $imageName;
}
以及存储到数据库时
foreach($validatedImages as $validatedImage)
if(!$service->images()->save(new ServiceImage(['name' => $validatedImage])))
// handle failure ..
所以我的问题是:处理这种回退的最佳做法是什么。
【问题讨论】:
-
MySQL 具有“事务”,可以专门执行“全部或无”。 Laravel 有办法解决这个问题吗?请参阅“开始”和“提交”。
标签: php mysql laravel validation