【发布时间】:2017-12-11 09:48:39
【问题描述】:
我有两个问题,首先我有 csv 文件并想将其导入数据库,第一个问题在数据库中我有 id 列,女巫将自动递增并且不存在于 csv 文件中,并且还有 2 个其他列(名称、作业)在 csv 文件中不存在,但希望它们在数据库中为空,最终用户将填写这些字段 第二个问题是数据库中的日期格式是 yyyy-mm-dd 和 csv 不同。 请注意,我不想修改 csv 文件我希望每件事都在 laravel 上完成,你能帮帮我吗
上传 csv 的控制器
public function store(Request $request)
{
$upload=$request->file('upload-file');
$filePath=$upload->getRealPath();
$file=fopen($filePath,'r');
$header=fgetcsv($file);
$escapedHeader=[];
foreach ($header as $key => $value) {
$header=strtolower($value);
$escapedItem=preg_replace('/[^a-z]/','', $header);
array_push($escapedHeader, $escapedItem);
}
while($columns=fgetcsv($file))
{
if($columns[0]=="")
{
continue;
}
foreach ($columns as $key => $value) {
$value=preg_replace('/\D/','', $value);
}
$data=array_combine($escapedHeader, $columns);
$id=$data['id'];
$details=$data['details'];
$postingdate=$data['postingdate'];
$description=$data['description'];
$amount=$data['amount'];
$type=$data['type'];
$slip=$data['slip'];
$name=$data['name'];
$job=$data['job'];
$addchecks=Checks::firstOrNew(['id'=>$id,'details'=>$details]);
$addchecks->postingdate=$postingdate;
$addchecks->description=$description;
$addchecks->amount=$amount;
$addchecks->type=$type;
$addchecks->slip=$slip;
$addchecks->name=$name;
$addchecks->job=$job;
$addchecks->save();
}
}
【问题讨论】: