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

Laravel Excel导入多行数据时提取指定列存入hasil表nilai_awal的实现方法

Laravel Excel导入多列数据存储方案

方案1:使用表头映射(推荐,稳定性更高)

先给你的导入类实现WithHeadingRow接口,Laravel Excel会自动识别第一行作为表头,你可以直接通过列名读取数据,避免硬编码索引带来的维护问题:

use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class HasilImport implements ToCollection, WithHeadingRow
{
    public function collection(Collection $rows)
    {
        foreach ($rows as $row) 
        {
            // 存储kriteria 1列数据
            Hasil::create([
                'kriteria_id'   => 1, // 替换为kriteria 1对应的实际主键ID
                'alternatif_id' => $row['alternatif_id'], // 替换为你alternatif_id对应的实际列名
                'nilai_awal'    => $row['kriteria_1'],
            ]);
            
            // 存储kriteria 2列数据
            Hasil::create([
                'kriteria_id'   => 2, // 替换为kriteria 2对应的实际主键ID
                'alternatif_id' => $row['alternatif_id'],
                'nilai_awal'    => $row['kriteria_2'],
            ]);
        }
    }
}

方案2:保留索引读取

如果你不想用表头映射,还是按列索引读取的话,调整代码如下即可,注意确认kriteria 2对应的列索引是否正确:

use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithStartRow;

class HasilImport implements ToCollection, WithStartRow
{
    public function collection(Collection $rows)
    {
        foreach ($rows as $row) 
        {
            // 存储kriteria 1列数据
            Hasil::create([
                'kriteria_id'   => 1, // 替换为kriteria 1对应的实际主键ID
                'alternatif_id' => $row[30],
                'nilai_awal'    => $row[14],
            ]);
            
            // 存储kriteria 2列数据
            Hasil::create([
                'kriteria_id'   => 2, // 替换为kriteria 2对应的实际主键ID
                'alternatif_id' => $row[30],
                'nilai_awal'    => $row[15], // 替换为kriteria 2对应的实际列索引
            ]);
        }
    }

    public function startRow(): int
    {
        return 2;
    }
}

注意事项

  • 原代码中create方法数组末尾多余的空字符串需要删除,否则会抛出字段不存在的异常
  • 如果不确定列索引或列名,可以在循环内加dd($row)打印行数据确认对应字段位置

内容的提问来源于stack exchange,提问作者Ibnu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:36:05