Rumah  >  Soal Jawab  >  teks badan

Isu Laravel: Masalah mengemas kini mempunyai Banyak rekod perhubungan

<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粉054616867P粉054616867388 hari yang lalu473

membalas semua(1)saya akan balas

  • P粉702946921

    P粉7029469212023-08-31 11:27:59

    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

    balas
    0
  • Batalbalas