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

Laravel跨表外键存储:如何将data_industri的ID存入produk_industri

解决Laravel外键存储问题

要把data_industri表的id作为外键nama_perusahaan_id存入produk_industri表,只需调整控制器的数据创建逻辑,同时修正几个细节问题:

1. 修正控制器的创建逻辑

创建DataIndustriModel实例时,保存返回的模型对象,就能拿到刚生成的id,再赋值给produk_industri的外键:

修改后的StoreController代码:

public function store(Request $request)
{
    $this->validate($request, [
        'nama_perusahaan'           => 'required',
        'pemilik_perusahaan'        => 'required',
        'alamat'                    => 'required',
        'kecamatan'                 => 'required',
        'kategori'                  => 'required',
        'nilai_investasi'           => 'required',
        'jml_tenaga_kerja'          => 'required',
        'koordinat'                 => 'required',
        'klbi'                      => 'required',
        'komoditi'                  => 'required',
        'satuan_komoditi'           => 'required',
        'kapasitas_komoditi'        => 'required',
        'gambar'                    => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
    ],[
        'nama_perusahaan.required'  => 'Nama Perusahaan Mohon Diisi',
        'pemilik_perusahaan.required' => 'Pemilik Perusahaan Mohon Diisi',
        'alamat.required'           => 'Alamat Perusahaan Mohon Diisi',
        'kecamatan.required'        => 'Kecematan Mohon Dipilih',
        'kategori.required'         => 'Kategori Perusahaan Mohon Dipilih',
        'nilai_investasi.required'  => 'Nilai Investasi Mohon Diisi',
        'jml_tenaga_kerja.required' => 'Jumlah Tenaga Kerja Mohon Diisi',
        'koordinat.required'        => 'Lokasi Koordinat Mohon Diisi',
        'klbi.required'             => 'Kode KLBI Mohon Diisi',
        'komoditi.required'         => 'Jenis Komoditas Belum Diisi',
        'satuan_komoditi.required'  => 'Satuan Komoditas Belum Diisi',
        'kapasitas_komoditi.required' => 'Kapasitas Komoditas Belum Diisi',
        'gambar.required'           => 'Ukuran Maksimal Gambar 2MB dan Format JPEG, JPG, PNG, GIF'
    ]);

    $data1 = $request->all();
    $data1['nama_perusahaan']       = $request->nama_perusahaan;
    $data1['slug']                  = Str::slug($request->nama_perusahaan);
    $data1['pemilik_perusahaan']    = $request->pemilik_perusahaan;
    $data1['alamat_perusahaan']     = $request->alamat;
    $data1['kecamatan_id']          = $request->kecamatan;
    $data1['kategori_id']           = $request->kategori;
    $data1['nilai_investasi']       = $request->nilai_investasi;
    $data1['jml_tenaga_kerja']      = $request->jml_tenaga_kerja;
    $data1['koordinat']             = $request->koordinat;
    $data1['gambar']                = $request->file('gambar')->store('industri','public');
    $data1['klbi']                  = $request->klbi; // 新增:将klbi存入data_industri表

    // 保存industri数据并获取实例
    $industri = DataIndustriModel::create($data1);

    $data2 = $request->all();
    $data2['nama_perusahaan_id']    = $industri->id; // 用刚创建的industri的id作为外键
    $data2['komoditi']              = $request->komoditi;
    $data2['satuan_komoditi']       = $request->satuan_komoditi;
    $data2['kapasitas_komoditi']    = $request->kapasitas_komoditi;

    ProdukIndustriModel::create($data2);
    FacadesAlert::success('Berhasil', 'Data Berhasil Tersimpan');
    return redirect()->route('index');
}

2. 修正ProdukIndustriModel的fillable字段

ProdukIndustriModel的fillable包含了produk_industri_id,但对应的数据库迁移中没有这个字段,会导致报错,需要移除:

class ProdukIndustriModel extends Model
{
    use HasFactory;

    protected $fillable = [
        'nama_perusahaan_id',
        // 移除'produk_industri_id',数据库无此字段
        'komoditi',
        'kapasitas_komoditi',
        'satuan_komoditi',
    ];
}

3. 可选:用关联简化创建逻辑

利用Eloquent关联可以更简洁地创建关联数据,无需手动赋值外键:

修改控制器中的创建部分:

// 保存industri数据并获取实例
$industri = DataIndustriModel::create($data1);

// 直接通过关联创建produk
$industri->produk_industris()->create([
    'komoditi'              => $request->komoditi,
    'satuan_komoditi'       => $request->satuan_komoditi,
    'kapasitas_komoditi'    => $request->kapasitas_komoditi,
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:55:20