Laravel - Вставка динамических изображений массивов JQuery в базу данных в один столбец - PullRequest
0 голосов
/ 23 ноября 2018

Мне нужно динамически хранить мои изображения в базе данных в одном столбце. Я не знаю, как это сделать, пожалуйста, помогите мне.заранее спасибо вот мой вид контроллера и модели.Вот изображение, ниже есть массив, который на кнопку выбора файла.Я хочу сохранить их в базе данных в столбце, как это сделать?

Content Image

Моя таблица базы данных называется 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 Ответ

0 голосов
/ 23 ноября 2018

Я думаю, что вы ищете, приведение атрибутов к массиву

https://laravel.com/docs/5.7/eloquent-mutators#attribute-casting

, это позволит вам сохранить массив расположений файлов в одном поле в БД и получитьих как массив

Я бы удалил сериализацию в $ fileNamesToStore

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...