Laravel 附加文件重复数据库记录
Posted
技术标签:
【中文标题】Laravel 附加文件重复数据库记录【英文标题】:Laravel Attach Files Duplicates Database Record 【发布时间】:2021-05-01 04:34:48 【问题描述】:我正在使用:Laravel、Vue JS、dropzone。
上传一个文件时可以正常工作,但上传 3 个文件时会创建一个新的作业记录,如下所示:
作业 ID:1,文件:1、2
作业 ID:2,文件:3
应该看起来像:
作业 ID:1,文件:1,2,3
上传代码如下:
public function store()
$data = request()->validate([
'title' => '',
'description' => '',
'start_date' => '',
'due_date' => '',
'group_id' => '',
'dropzonefile' => '',
'live_status' => '',
]);
// Create homework record...
$task = request()->user()->homeworks()->create([
'title' => $data['title'],
'description' => $data['description'],
'start_date' => $data['start_date'],
'due_date' => $data['due_date'],
'live_status' => $data['live_status'],
]);
// Add homework to some groups...
$task->groups()->attach(Arr::pluck(json_decode($data['group_id']), 'group_id'));
// Upload all files...
if (isset($data['dropzonefile']))
foreach ($data['dropzonefile'] as $attachment)
$attachmentName = $attachment->store('userFiles', 'public');
$attachmentInfo = request()->user()->attachments()->create([
'reference_name' => $attachmentName,
'original_file_name' => $attachment->getClientOriginalName(),
]);
$task->attachments()->attach($attachmentInfo->id);
return new TaskResource($task);
前端代码:
dropzoneOptions:
paramName: "dropzonefile",
url: '/api/homework',
thumbnailWidth: 150,
maxFilesize: 20,
maxFiles: 5,
addRemoveLinks: true,
uploadMultiple: true,
autoProcessQueue: false,
headers:
'X-CSRF-TOKEN': document.head.querySelector('meta[name=csrf-token]').content,
,
sending: (file, xhr, formData) =>
formData.append('title', this.taskTitle);
formData.append('description', this.content);
formData.append('start_date', this.selectedSetDate);
formData.append('due_date', this.selectedDueDate);
formData.append('group_id', JSON.stringify(this.value));
formData.append('live_status', this.liveStatus);
,
success: (event, res) =>
// alert('success');
console.log(event);
this.makeToast(true,'info');
this.$router.push('/Teacher')
,
【问题讨论】:
我没有看到你的代码有任何问题,也许问题就在前面 是的,它真的很奇怪,我将添加前端请求代码。 【参考方案1】:我想我找到了答案: upload multiple files in one request Dropzone sending two requests
好像我错过了一些 dropzone 选项:
autoDiscover: false,
parallelUploads: 10,
【讨论】:
以上是关于Laravel 附加文件重复数据库记录的主要内容,如果未能解决你的问题,请参考以下文章
迭代数据时,Laravel 无法将 stdClass 类型的对象用作 Job 的数组 [重复]