我正在尝试将excel导入数据保存到数据库中,当前路由和所有功能都在工作,只是没有在数据库中添加任何内容。它进入函数import
中,但是什么也没有发生,问题几乎肯定在该函数的代码中,但是我不确定应该如何处理。
这是我在控制器中的代码
public function import(Request $request)
{
Log::info('test');
$request->validate([
'file' => 'required|mimes:xls,xlsx'
]);
$path = $request->file('file')->getRealPath();
Log::info($path);
$data = Excel::load($path)->get();
Log::info($data);
if ($data->count()) {
foreach ($data as $key => $value){
$arr[] = [
'NOMBRE' => $value->name,
'CEDULA' => $value->card,
'CARNET' => $value->scard,
'TIPO-USUARIO' => $value->user_type_id,
'CORREO' => $value->email,
'PASSWORD' => $value->password,
];
}
if (!empty($arr)) {
User::insert($arr);
}
}
return redirect('/imports');
}
当我在日志中运行的唯一内容是local.INFO: test
时,它是函数的第一行,但是此后的所有内容都是空白,我不确定自己在做什么错。
答案 0 :(得分:0)
您似乎应该在mass assignment属性中添加字段,以便能够以这种方式插入记录
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['NOMBRE','CEDULA','CARNET','TIPO-USUARIO','PASSWORD','CORREO'];
}
也许您也可以将您的insert语句移动到for语句中,以便将当前的处理用户插入数据库或循环$ arr并在其后插入
if (!empty($arr)) {
User::create($arr[$key]);
}
答案 1 :(得分:0)
如果您使用的是laravel,则可以这样做
public function import(Request $request)
{
Log::info('test');
$request->validate([
'file' => 'required|mimes:xls,xlsx'
]);
$path = $request->file('file')->getRealPath();
Log::info($path);
$data = Excel::load($path)->get();
Log::info($data);
if ($data->count()) {
foreach ($data as $key => $value){
$user = new User();
$user->NOMBRE = $value->name;
$user->CEDULA = $value->card;
$user->CARNET = $value->scard;
$user->TIPO-USUARIO = $value->user_type_id;
$user->CORREO = $value->email;
$user->PASSWORD = $value->password;
$user->save();
}
}`enter code here`
return redirect('/imports');
}