laravel 如何使用不同的表存储外键

voj3qocg  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(123)

我的剧本有问题
这是我的准则。

1.数据行业迁移

public function up()
    {
        Schema::create('data_industri', function (Blueprint $table) {
            $table->id();
            $table->string('nama_perusahaan')->nullable();
            $table->string('pemilik_perusahaan')->nullable();
            $table->string('kategori_id')->nullable();
            $table->string('alamat_perusahaan')->nullable();
            $table->string('kecamatan_id')->nullable();
            $table->integer('klbi')->nullable();
            $table->string('slug')->nullable();
            $table->string('gambar')->nullable();
            $table->integer('nilai_investasi')->nullable();
            $table->integer('jml_tenaga_kerja')->nullable();
            $table->timestamps();
        });
    }

2.数据工业模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class DataIndustriModel extends Model
{
    use HasFactory;

    protected $table = 'data_industri';

    protected $fillable = [
        'nama_perusahaan',
        'pemilik_perusahaan',
        'alamat_perusahaan',
        'kategori_id',
        'kecamatan_id',
        'nilai_investasi',
        'jml_tenaga_kerja',
        'koordinat',
        'slug',
        'gambar',
    ];

    public function kategoris()
    {
        return $this->belongsTo(KategoriIndustriModel::class, 'kategori_id', 'id');
    }
    
    public function kecamatans()
    {
        return $this->belongsTo(KecamatanModel::class, 'kecamatan_id', 'id');
    }
    
    public function produk_industris()
    {
        return $this->hasMany(ProdukIndustriModel::class, 'nama_perusahaan_id', 'id' );
    }
}

1.产品行业迁移

public function up()
    {
        Schema::create('produk_industri', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('nama_perusahaan_id')->nullable();
            $table->foreign('nama_perusahaan_id')->references('id')
            ->on('data_industri');
            $table->string('komoditi')->nullable();
            $table->integer('kapasitas_komoditi')->nullable();
            $table->string('satuan_komoditi')->nullable();
            $table->timestamps();
        });
    }

4.数据产品工业模型

class ProdukIndustriModel extends Model
{
    use HasFactory;

    protected $fillable = [
        'nama_perusahaan_id',
        'produk_industri_id',
        'komoditi',
        'kapasitas_komoditi',
        'satuan_komoditi',
    ];
}

这是我的控制器

5.存储控制器

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');

        $data2 = $request->all();
        $data2['nama_perusahaan_id']            = {{ ????????? }}
        $data2['klbi']                          = $request->klbi;
        $data2['komoditi']                      = $request->komoditi;
        $data2['satuan_komoditi']               = $request->satuan_komoditi;
        $data2['kapasitas_komoditi']            = $request->kapasitas_komoditi;
    
        DataIndustriModel::create($data1);
        ProdukIndustriModel::create($data2);
        FacadesAlert::success('Berhasil', 'Data Berhasil Tersimpan');
        return redirect()->route('index');
    }

我的问题是,如何将nama_perusahaan_id存储为表produk_industri中的外键,其中值来自表data_industri中的id
提前感谢。
我希望有人能帮我写剧本

jm81lzqq

jm81lzqq1#

也许你应该把**DataIndustriModel::create($data1)**存储到一个变量中,然后你就可以得到nama_perusahaan_id了。

$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 = DataIndustriModel::create($data1);

之后,您可以使用**$data1-〉id获取名称_perusahaan_id**

$data2 = $request->all();
$data2['nama_perusahaan_id'] = $data1->id;
$data2['klbi'] = $request->klbi;
$data2['komoditi'] = $request->komoditi;
$data2['satuan_komoditi'] = $request->satuan_komoditi;
$data2['kapasitas_komoditi'] = $request->kapasitas_komoditi;
ProdukIndustriModel::create($data2);

您可以从文档中阅读文档

相关问题