Laravel 5.2: Kunci Utama Tersuai untuk Jadual Fasih - Mengelakkan Nilai Sifar
Dalam Laravel 5.2, menggunakan rentetan sebagai kunci utama tersuai untuk jadual Fasih boleh mengakibatkan tingkah laku yang tidak dijangka: nilai kunci utama menjadi sifar (0). Untuk menangani isu ini, adalah penting untuk memahami aspek khusus mekanisme pemutus atribut model Eloquent.
Secara lalai, Eloquent cuba menghantar atribut khusus kepada jenis data yang sesuai. Untuk jadual penambahan automatik, ID diandaikan sebagai integer. Walau bagaimanapun, apabila menggunakan rentetan sebagai kunci utama, penghantaran ini membawa kepada penukaran nilai kunci yang salah kepada 0.
Untuk menyelesaikan masalah ini, tiga strategi boleh digunakan:
Kaedah 1: Lumpuhkan Penambahan
Menetapkan sifat $incrementing kepada palsu dalam kelas model menunjukkan bahawa kekunci utama jadual tidak meningkat secara automatik. Ini memberitahu Eloquent supaya tidak menggunakan penghantaran integer pada kunci utama.
class UserVerification extends Model { protected $primaryKey = 'verification_token'; public $incrementing = false; }
Kaedah 2: Tentukan Kunci Penambahan
Dalam kes di mana kunci utama model ialah integer , walaupun ia bukan autoincrementing, menetapkan $incrementing kepada false mungkin tidak sesuai. Sebaliknya, nyatakan jenis data kunci utama menggunakan sifat $keyType.
class UserVerification extends Model { protected $primaryKey = 'verification_token'; protected $keyType = 'string'; }
Kaedah 3: Hantar Kunci Utama Secara Eksplisit
Pendekatan alternatif adalah dengan secara eksplisit hantar kunci utama ke rentetan dalam pertanyaan Eloquent itu sendiri. Ini memastikan bahawa kunci utama dikendalikan sebagai rentetan, tanpa mengira tetapan lalai model.
UserVerification::where('verification_token', (string) $token)->first();
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Nilai Sifar Apabila Menggunakan Kekunci Utama Rentetan Tersuai dalam Model Laravel 5.2 Fasih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!