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

Laravel 8使用Facades DB插入时如何获取主键用于foto字段赋值

解决方案

你可以使用Laravel查询构造器提供的insertGetId()方法实现需求,该方法会在插入数据后直接返回新生成的自增主键值,后续你就可以用该主键拼接文件名,再更新对应记录即可,修改后的代码参考如下:

public function aksimenulis_laporan(Request $request){
    $filefoto = $request->foto;
    // 第一步:先插入除foto外的其他字段,拿到自增主键id
    $id_pengaduan = DB::table('pengaduan')->insertGetId([
        'tgl_pengaduan' => date('Y-m-d'),
        'nik' => $request->input('nik'), // 更推荐用Laravel的$request获取参数,替代原生$_POST
        'isi_laporan' => $request->input('isi_laporan'),
        'status' => '0',
    ]);

    // 第二步:拼接你需要的foto文件名格式
    $nama_file_baru = $id_pengaduan . '_' . $filefoto->getClientOriginalName();

    // 第三步:更新刚才插入的记录,填充foto字段
    DB::table('pengaduan')
        ->where('id_pengaduan', $id_pengaduan)
        ->update(['foto' => $nama_file_baru]);

    // 上传文件时也使用拼接好的新文件名
    $tujuan_upload = storage_path();
    $filefoto->move($tujuan_upload, $nama_file_baru);
    
    return redirect('');    
}

补充说明

  • insertGetId()仅适用于主键为自增类型的场景,和你表中id_pengaduan的结构匹配。
  • 额外建议:Laravel中优先用$request->input('参数名')替代原生$_POST获取请求参数,兼容性和安全性更好。
  • 如果你的表有对应Eloquent模型的话,也可以先创建模型实例、保存后直接取$model->id拿到主键,逻辑和上面的方案一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:07