Isu Laravel: Masalah mengemas kini mempunyai Banyak rekod perhubungan
P粉054616867
P粉054616867 2023-08-30 21:47:17
0
1
553
<p>Saya mempunyai model Pengguna yang mempunyai banyak hubungan dengan model Jenama dan saya menghadapi masalah mengemas kini Jenama pengguna dengan betul. </p> <p>Saya mempunyai borang yang membolehkan pengguna memasukkan/mengalih keluar/mengemas kini jenama mereka sendiri dalam medan teks, kaedah yang saya gunakan pada masa ini untuk mengemas kini jenama pengguna selepas pengguna memasuki atau mengedit jenama adalah untuk memadam semua jenama sedia ada yang berkaitan dengan pengguna , kemudian gelung melalui nilai, cipta model jenama, kemudian "saveMany"...tetapi saya nampaknya mendapat konflik kekangan apabila menambah...saya tertanya-tanya jika ada cara yang lebih baik untuk melakukan ini < /p> <p>Model <kod>Pengguna</kod> saya mempunyai yang berikut;</p> <pre class="brush:php;toolbar:false;">jenama fungsi awam() { return $this->hasMany('Brands::class'); } </pra> <p>Kemudian dalam pengawal saya, saya mempunyai kod berikut untuk mengemas kini jenama;</p> <pre class="brush:php;toolbar:false;">$user->brands()->delete(); foreach ($request['brands'] sebagai $brand) { $brandArray[] = Jenama baharu([ 'name' => $brand['name'], 'rating' => $brand['rating'], ]); } !empty($brandArray) && $user->brands()->saveMany($brandArray); </pra> <p>Adakah cara yang lebih baik? </p>
P粉054616867
P粉054616867

membalas semua(1)
P粉702946921

Mari kita pecahkan perkara kepada tiga bahagian:

# Pelanggaran kunci kekangan:

Jika anda menambahkan kekangan kunci asing pada jadual lain dan perlu memadamkan jenama, anda juga harus memadamkan semua data berkaitan yang dikekang oleh kunci asing.

#Reka Bentuk

Jika data berkaitan jenama tidak dapat dibuang, maka mungkin kita boleh pertimbangkan jika ada reka bentuk yang lebih baik. Mungkin kita boleh menambah cangkuk pada bahagian hadapan yang memanggil API DELETE setiap kali pengguna memadamkan beberapa data.

# Pertanyaan

Jika jenama mempunyai beberapa kunci unik, anda boleh menggunakan upsert dan bukannya saveMany. Ini akan menjadi lebih cekap.

#kesimpulan

Saya syorkan pemadaman jenama melalui cangkuk pada bahagian hadapan apabila pengguna memadamkannya, dan gunakan upsert 来处理创建和更新 untuk mengendalikan membuat dan mengemas kini kandungan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan