Dalam aplikasi GORM, percubaan untuk memadamkan baris yang tidak wujud tidak diiktiraf sebagai ralat. Untuk memastikan pengendalian ralat yang betul, adalah penting untuk memeriksa bilangan baris yang terjejas.
Pertimbangkan fungsi DeleteCategory berikut:
<code class="golang">var db *gorm.DB func DeleteCategory(id uint) error { var category Category category.ID = id result := db.Delete(&category) fmt.Println("result.Error: ", result.Error) return result.Error }</code>
Memanggil fungsi ini beberapa kali dengan id yang sama tidak menghasilkan ralat, walaupun hanya memadamkan satu baris pada kali pertama. Ini kerana standard SQL tidak menganggap memadamkan baris yang tidak wujud sebagai ralat.
Untuk membetulkannya, tambahkan semakan untuk medan RowsAffected:
<code class="golang">func DeleteCategory(id uint) error { c := Category{ID: id} db := db.Delete(&c) if db.Error != nil { return db.Error } else if db.RowsAffected < 1 { return fmt.Errorf("row with id=%d cannot be deleted because it doesn't exist", id) } return nil }</code>
Dengan pengubahsuaian ini, fungsi akan kembali ralat jika baris dengan id yang ditentukan tidak wujud.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Baris Tidak Wujud dalam Fungsi Padam GORM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!