问答 / 0 / 3 / 创建于 3年前
之前都是能导入的,隔了两天没用就出问题了,代码一直没动过,有大神帮忙看看是怎么回事吗?
这报错信息不是已经很明显了吗?
意外的传参类型,预期是 model ,你传了一个 string,90% 原因是传参错误。
model
string
我没用过这个,如果确定你没修改且之前能用,可以看看是不是更新了扩展包 :see_no_evil:
扩展是 maatwebsite/excel: ^3.1, 使用 Collection 导入的. :flushed:
maatwebsite/excel: ^3.1
Collection
<?php namespace App\Imports; use App\Models\Competition; use App\Models\CompetitionGroup; use App\Models\CompetitionGroupRanking; use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\ToCollection; class CompetitionGroupRankingImport implements ToCollection { public $competition; public $competitionGroup; public function __construct(Competition $competition, CompetitionGroup $competitionGroup) { $this->competition = $competition; $this->competitionGroup = $competitionGroup; } /** * @inheritDoc */ public function collection(Collection $collection) { $collect = collect(); foreach ($collection as $item) { if (isset($item[0]) && (is_numeric($item[0]) || $item[0] == null) && isset($item[1]) && $item[1]) { $collect->push([ 'competition_id' => $this->competition->id, 'competition_group_id' => $this->competitionGroup->id, 'ranking' => $item[0], 'name' => $item[1], 'score' => $item[2], ]); } } CompetitionGroupRanking::query()->where('competition_id', '=', $this->competition->id)->where('competition_group_id', '=', $this->competitionGroup->id)->delete(); CompetitionGroupRanking::query()->insert($collect->toArray()); } }
<?php namespace App\Http\Controller; class CompetitionController extends Controller{ /** * 导入赛事成绩 * * @param Request $request * * @return JsonResponse */ public function groupRankingImport(Request $request) { try { $validated = $this->validate($request, [ 'competition_id' => ['required', 'exists:competitions,id'], 'competition_group_id' => ['required', 'exists:competition_groups,id'], 'file' => ['required', 'file', 'mimes:xlsx,xls'], ]); $competition = Competition::query()->find($validated['competition_id']); $competition_group = CompetitionGroup::query()->find($validated['competition_group_id']); Excel::import(new CompetitionGroupRankingImport($competition, $competition_group), $validated['file']); return $this->success(); } catch (ValidationException $e) { return $this->fail($e->validator->errors()->first()); } } }
我要举报该,理由是:
高认可度评论:
这报错信息不是已经很明显了吗?
意外的传参类型,预期是
model
,你传了一个string
,90% 原因是传参错误。我没用过这个,如果确定你没修改且之前能用,可以看看是不是更新了扩展包 :see_no_evil:
这报错信息不是已经很明显了吗?
意外的传参类型,预期是
model
,你传了一个string
,90% 原因是传参错误。扩展是
maatwebsite/excel: ^3.1
, 使用Collection
导入的. :flushed: