Laravel - 在数据库中在一列中插入动态图像数组 JQuery
Posted
技术标签:
【中文标题】Laravel - 在数据库中在一列中插入动态图像数组 JQuery【英文标题】:Laravel - Insert Dynamic Images Arrays JQuery on Database in One Column 【发布时间】:2019-04-25 15:42:04 【问题描述】:我需要将我的图像动态存储在数据库中的一列中,我不知道该怎么做,请帮助我。提前谢谢这里是我的视图控制器和模型。这是一张图片,下面有一个选择文件按钮上的数组。我想将它们存储到数据库中的一个列中该怎么做?
我的数据库表名称是 InflightMagazine
我的查看代码
!! Form::open(['action'=>'Admin\InflightMagazines@store', 'method' => 'POST','enctype'=>'multipart/form-data']) !!
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr class="form-row">
<td> <b> Form::text('inflightmagz_date[]', date('F Y') , ['class' => 'form-control', 'id'=>"exampleFormControlFile1"])</b><br>
Form::file('infightmagazine_pdf[]',['id'=>'exampleFormControlFile1'])
Form::button('', ['class' => 'btn btn-success fa fa-plus-circle addFile', 'id'=>'addFile','name'=>'addFile', 'style'=>'font-size:15px;'])
</td>
<td> Form::button('', ['class' => 'btn btn-success fa fa-plus-circle add', 'id'=>'add','name'=>'add', 'style'=>'font-size:15px;']) </td>
</tr>
</table>
Form::submit('submit', ['class'=>'btn btn-primary', 'name'=>'submit'])
</div>
!! Form::close() !!
AJAX/JQuery代码
<script>
$(document).ready(function()
var len = $('.form-row').length;
$(document).on('click', '.add', function()
$('#dynamic_field').append('<tr class="form-row" data-id="'+len+'"><td> Form::text('inflightmagz_date[]', date('F Y') , ['class' => 'form-control', 'id'=>"exampleFormControlFile1"]) <br> Form::file('infightmagazine_pdf[]',['id'=>'exampleFormControlFile1']) Form::button('', ['class' => 'btn btn-success fa fa-plus-circle addFile', 'id'=>'addFile','name'=>'addFile', 'style'=>'font-size:15px;']) </td><td><button type="button" name="remove" class="btn btn-danger fa fa-minus-circle btn_remove_all"></button></td></tr>');
);
$(document).on('click', '.submit', function()
$.ajax(
method: "POST",
data: $('#add_name').serialize(),
success: function(data)
alert(data);
$('#add_name')[0].reset();
);
);
$(document).on('click', '.addFile', function()
var id = $(this).closest('.form-row').data('id');
var elem = '<tr class="'+id+'"><td> Form::file('infightmagazine_pdf[]',['id'=>'exampleFormControlFile1']) <button type="button" name="remove" class="btn btn-danger btn_remove fa fa-minus-circle"></button></td></tr>';
$(elem).insertAfter($(this).closest('tr'));
);
$(document).on('click', '.btn_remove, .btn_remove_all', function()
if($(this).hasClass('btn_remove_all'))
var id = $(this).closest('.form-row').data('id');
$('tr.'+id).remove();
$(this).closest('tr').remove();
);
);
</script>
控制器存储功能代码
public function store(Request $request)
$this->validate($request, [
'inflightmagz_date' => 'required',
'infightmagazine_pdf' => 'required'
]);
if ($request->has('infightmagazine_pdf'))
//Handle File Upload
$inflightmags = [];
foreach ($request->file('infightmagazine_pdf') as $key => $file)
// Get FileName
$filenameWithExt = $file->getClientOriginalName();
//Get just filename
$filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
//Get just extension
$extension = $file->getClientOriginalExtension();
//Filename to Store
$fileNameToStore = $filename.'_'.time().'.'.$extension;
//Upload Image
$path = $file->storeAs('public/infightmagazine_pdfs',$fileNameToStore);
array_push($inflightmags, $fileNameToStore);
$fileNameToStore = serialize($inflightmags);
【问题讨论】:
【参考方案1】:我认为您正在寻找的是将属性转换为数组
https://laravel.com/docs/5.7/eloquent-mutators#attribute-casting
这将允许您将文件位置数组保存到数据库中的单个字段并将它们作为数组检索
我会删除 $fileNamesToStore 上的序列化
希望对你有帮助
【讨论】:
以上是关于Laravel - 在数据库中在一列中插入动态图像数组 JQuery的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 中在一秒钟内发出并发请求时避免重复记录