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

使用maatwebsite/excel导入时仅创建第一个Eloquent模型的问题求助

问题分析与解决方案

问题根源

  1. 代码执行终止:model方法中return new Siswa(...)语句会直接终止方法执行,后续创建User的代码完全不会被运行。
  2. 未持久化User对象:就算User的代码能执行,仅new User(...)只是创建内存对象,没有调用save()或create()方法将数据写入数据库。
  3. 关联逻辑错误:Siswa的user_id直接使用Excel中的row[4],但如果是导入时新建User,应该用刚创建的User的主键ID,否则会导致关联失效。

修正后的代码

修改SiswaImport类的model方法

public function model(array $row)
{
    // 先创建并保存User
    $user = User::create([
        'name' => $row[5],
        'email' => $row[10],
        'password' => bcrypt($row[3].'*'),
        'outlet_id' => $row[22],
    ]);

    // 使用新创建的User的ID关联Siswa,返回的Siswa模型会被maatwebsite/excel自动保存
    return new Siswa([
        'created_at'     => $row[1],
        'updated_at'    => $row[2], 
        'nis' => $row[3],
        'user_id'     => $user->id, // 替换为刚创建的User的ID
        'nama'    => $row[5], 
        'nik' => $row[6],
        'alamat'     => $row[7],
        'ayah'    => $row[8], 
        'ibu' => $row[9],
        'email'     => $row[10],
        'kerja_ayah'    => $row[11], 
        'kerja_ibu' => $row[12],
        'wali'    => $row[13], 
        'kerja_wali' => $row[14],
        'telpon_ayah'     => $row[15],
        'telpon_ibu'    => $row[16], 
        'kelas' => $row[17],
        'referensi'     => $row[18],
        'note'    => $row[19], 
        'channel' => $row[20],
        'url_foto' => $row[21],
        'outlet'    => $row[22], 
        'penilaian1' => $row[23],
        'penilaian2'     => $row[24],
        'penilaian3'    => $row[25], 
        'penilaian4' => $row[26],
        'penilaian5'     => $row[27],
        'target'    => $row[28], 
        'prodi_id' => $row[29],
    ]);
}

额外注意事项

  • 确保User模型的$fillable属性包含name、email、password、outlet_id字段,否则create()方法会因批量赋值限制失败。
  • 若Excel中可能存在重复的email,建议添加重复检查逻辑,避免创建重复User:
$user = User::firstOrCreate(
    ['email' => $row[10]],
    [
        'name' => $row[5],
        'password' => bcrypt($row[3].'*'),
        'outlet_id' => $row[22],
    ]
);

内容的提问来源于stack exchange,提问作者M. Rivaldi Anwar Putra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:30:19