将数据导入数据库并在laravel的html表中显示

时间:2017-10-20 03:05:20

标签: laravel

我想在laravel中创建一个视图,该视图具有将excel文件导入数据库并在视图内的表中显示的功能。

我创建了一个控制器,它在数据库中导入excel数据,但无法在视图中显示它。

请帮助解决我的问题。

非常感谢提前。

最诚挚的问候,

我正在使用laravel 5.5和maatwebsite excel

public function importFileIntoDB(Request $request){
        if($request->hasFile('sample_file')){
            $path = $request->file('sample_file')->getRealPath();  
            $data = Excel::load($path, function($reader) {})->get();
            if($data->count()){
                foreach ($data as $key => $value) {
                    $arr[] = ['name' => $value->name, 'details' => $value->details];
                }

                if(!empty($arr)){
                    \DB::table('products')->insert($arr);
                    dd('Insert Record successfully.');
                }
            }
        }

        return back()->with($arr);   
    } 

这是我的观点

@extends('frontpage')

@section('title', 'Dashboard')

@section('content_header')
    <h1>Upload File From Excel Into Database</h1>
@stop

@section('content')
    <div class="panel panel-primary">
    <div class="container">   
    <div class="panel panel-primary">
      <div class="panel-heading">
        <h3 class="panel-title" style="padding:12px 0px;font-size:25px;"><strong>Test - import export csv or excel file into database example</strong></h3>
      </div>
      <div class="panel-body">

          @if ($message = Session::get('success'))
          <div class="alert alert-success" role="alert">
            {{ Session::get('success') }}
          </div>
        @endif

        @if ($message = Session::get('error'))
          <div class="alert alert-danger" role="alert">
            {{ Session::get('error') }}
          </div>
        @endif

        <h3>Import File Form:</h3>
        <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 20px;" action="{{ URL::to('importExcel') }}" class="form-horizontal" method="post" enctype="multipart/form-data">

          <input type="file" name="import_file" />
          {{ csrf_field() }}
          <br/>

          <button class="btn btn-primary">Import CSV or Excel File</button>

        </form>
        <br/>


          <h3>Import File From Database:</h3>
          <div style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 20px;">     
            <a href="{{ url('downloadExcel/xls') }}"><button class="btn btn-success btn-lg">Download Excel xls</button></a>
          <a href="{{ url('downloadExcel/xlsx') }}"><button class="btn btn-success btn-lg">Download Excel xlsx</button></a>
          <a href="{{ url('downloadExcel/csv') }}"><button class="btn btn-success btn-lg">Download CSV</button></a>
          </div>


            <h3>Table Import List </h3>
          <div style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 20px;" > 
              print_r($arr->count());
              @if(!empty($arr))
               <table class="table table-striped table-hover table-reflow">
                  @foreach($arr as $key=>$value)
                          <tr>
                              <th ><strong> {{ $key }}: </strong></th>
                              <td>  {{ $value }} <td>
                          </tr>
                  @endforeach
              </table>
              @endif
          </div>
      </div>
    </div>
  </div>
@stop

@section('css')
    <link rel="stylesheet" href="/css/admin_custom.css">
@stop

@section('js')
    <script> console.log('Hi! this is frontpage'); </script>
@stop

2 个答案:

答案 0 :(得分:0)

更改

return back()->with($arr);

return back()->with(['arr' => $arr]);
return back()->with('arr', $arr); // Should be equivalent
return back()->compact($arr); // Should be equivalent

with方法不接受单个值:您需要指定数组,键和值或使用compact方法

答案 1 :(得分:0)

由@gbalduzzi传达,您需要将数据作为

返回到视图
return back()->with(['arr' => $arr]);

并在您的视图中访问

@if(session()->has('arr'))
<table class="table table-striped table-hover table-reflow">
@php $arr = session('arr'); @endphp
@foreach($arr as $key => $value)
    <tr>
        <th ><strong> {{ $value['name'] }}: </strong></th>
        <td>{{ $value['details'] }} <td>
    </tr>
@endforeach
</table>
@endif

Docs