Я хочу импортировать данные электронной таблицы в базу данных sql, это моя таблица,
А это мой взгляд и контроллер,
<?php
namespace App\Http\Controllers;
use App\DailyAttendance;
use Illuminate\Http\Request;
use App\Exports\DailyAttendanceExport;
use App\Imports\DailyAttendanceImport;
use Maatwebsite\Excel\Facades\Excel;
class DailyAttendanceController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$dailyAttendance = DailyAttendance::all();
return view('daily_attendance.index')->with('dailyAttendance', $dailyAttendance);
}
/**
* Import function
*/
public function import(Request $request)
{
if ($request->file('imported_file')) {
$import = new DailyAttendanceImport();
$import->onlySheets('Logs');
Excel::import($import, request()->file('imported_file'));
return back();
}
}
<form id="upload_excel" method="post" enctype="multipart/form-data" action="{{ route('dailyAttendance.import') }}" autocomplete="off">
@csrf
@method('post')
<input type="file" name="imported_file" required>
<button style="margin-left: 10px;" class="btn btn-info" type="submit">Upload attendance</button>
</form>
Также это мой модельный класс,
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class DailyAttendance extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'emp_id', 'date','start','end',
];
}
и я также создал класс импорта,
<?php
namespace App\Imports;
use App\DailyAttendance;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class DailyAttendanceImport implements ToModel, WithHeadingRow
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
//
}
}
// change this to import data to an array instead of db...........
но согласно документации, laravel документация Excel значения листа можно импортировать только как строки, например
return new DailyAttendance([
'emp_id' => $row['emp_id'],
'date' => $row['date'],
'start' => $row['start'],
'end' => $row['end'],
]);
и из-за формата листа Excel я хочу записывать значения по их адресам ячеек. Может кто-нибудь показать мне, как импортировать значения ячеек в модель, спасибо!