【发布时间】:2017-12-20 10:17:34
【问题描述】:
我正在尝试使用 Maaatwebsite 将 Excel 文件上传到我的 laravel 5.4.36 项目中的数据库,但它没有找到一些列并反转表列结构。 这是我的控制器文件:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use Maatwebsite\Excel\Facades\Excel;
class DebitController extends Controller
{
public function __construct()
{
$this->middleware('auth:admin');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('debit');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
// ...
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
// ...
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$debits = DB::table('debits')->get();
return view('debit')->with(compact('debits'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
// ...
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
// ...
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
// ...
}
public function import(Request $request)
{
if($request->file('imported-file'))
{
$path = $request->file('imported-file')->getRealPath();
$data = Excel::load($path, function($reader) {
})->get();
if(!empty($data) && $data->count())
{
$data = $data->toArray();
for($i=0;$i<count($data);$i++)
{
$dataImported[] = $data[$i];
}
}
\App\Debit::insert($dataImported);
}
return back();
}
}
这是我的模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Debit extends Model
{
protected $fillable = [
'client_name',
'Current',
'1_30',
'31_60',
'61_90',
'>90',
'Total',
'Total_Pd_chqs',
'By_30th_Nov',
'By_5th_Dec',
'By_15th_Dec',
'By_20th_Dec',
'By_31st_Dec',
'Balance_adjusted',
'December_Collection_tenants',
'Status'
];
}
当我尝试上传具有相同列标题的 Excel 文件是表字段时,我收到错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'december_collection_tenants' in 'field list' (SQL: insert into `debits` (`1_30`, `31_60`, `61_90`, `balance_adjusted`, `by_15th_dec`, `by_20th_dec`, `by_30th_nov`, `by_31st_dec`, `by_5th_dec`, `client_name`, `current`, `december_collection_tenants`, `status`, `total`, `total_pd_chqs`, `90`) values (-2500, -4500, 5000, -5500, 4500, 2500, -2500, -3000, 5000, Jane anyango, 30000, 500, Ok, 1000, 6500, 3000))
我做错了什么?
【问题讨论】:
-
好吧,
1_30 != 1-30,不是吗? -
将它们全部更改为 1_30 或 1-30 并不能解决问题
-
我也注意到空格已经改成_
标签: php laravel-5.4 maatwebsite-excel