You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel使用Maatwebsite Excel导入产品后如何获取返回的ID列表?

解决方案

第一步:修改 ProductImport 类

给Import类新增公共属性存储导入成功的产品ID,遍历行时把新增的ID存入该属性:

<?php
namespace App\Imports;

use App\Product;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class ProductImport implements ToCollection {
    // 新增公共属性存储导入的产品ID
    public $importedProductIds = [];

    public function collection(Collection $rows) {
        foreach ($rows as $row) {
            $productId = Product::create([
                'name' => $row[0],
                'detail' => $row[1]                
            ])->id;
            // 把每个新增的ID存入属性数组
            $this->importedProductIds[] = $productId;
        }
    }
}

第二步:在控制器中读取存储的ID

Excel导入完成后直接访问Import实例的自定义属性即可拿到所有ID,按需返回或做后续管控逻辑即可:

public function uploadProducts(Request $request) {
    $request->validate([
        'import_file' => 'required|file|mimes:xls,xlsx'
    ]);

    $path = $request->file('import_file');
    $import = new ProductImport;
    Excel::import($import, $path);
    
    // 获取所有录入的产品ID
    $productIds = $import->importedProductIds;

    return response()->json([
        'message' => 'uploaded successfully',
        'imported_product_ids' => $productIds
    ], 200);
}
  • 该方案会收集所有导入成功的产品ID,可直接基于这个数组做权限校验、日志记录等管控逻辑
  • 如果需要处理导入失败的场景,可补充try catch捕获创建产品时的异常,过滤失败的ID即可

内容的提问来源于stack exchange,提问作者Lucas Cardemil Villegas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:57:03