Apabila menggunakan Laravel untuk operasi pangkalan data, anda kadangkala menghadapi masalah biasa: tiada kunci utama. Ini kerana dalam model lalai Laravel, kunci utama secara automatik diandaikan sebagai id Jika tiada medan id dalam pangkalan data atau medan tidak ditetapkan sebagai kunci utama, ralat tanpa kunci utama akan digesa.
Jadi, bagaimana untuk menyelesaikan masalah tiada kunci utama? Penyelesaian akan diperkenalkan dari perspektif pangkalan data dan model Laravel masing-masing.
1. Penyelesaian pangkalan data
Dalam pangkalan data MySQL, anda boleh menggunakan pernyataan ALTER TABLE untuk mengubah suai struktur jadual, termasuk menetapkan kunci utama . Contoh:
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
Antaranya, nama jadual dan nama medan perlu diganti sendiri.
Jika tiada medan kunci utama yang sesuai dalam pangkalan data, anda boleh menyelesaikan masalah dengan mencipta medan kunci utama baharu. Contoh:
ALTER TABLE 表名 ADD 字段名 INT AUTO_INCREMENT PRIMARY KEY;
Antaranya, nama jadual dan nama medan perlu diganti sendiri. AUTO_INCREMENT menunjukkan bahawa medan meningkat secara automatik.
2. Penyelesaian model Laravel
Dalam model Laravel, anda boleh menyesuaikan kunci utama melalui atribut $primaryKey. Contoh:
class User extends Model { protected $primaryKey = 'user_id'; }
Di sini kunci utama ditetapkan kepada user_id.
Jika anda menggunakan kunci utama bukan penambahan automatik, anda perlu menetapkan sifat $incrementing kepada false untuk melumpuhkan auto -menambah kunci utama. Contoh:
class Product extends Model { public $incrementing = false; }
Dalam beberapa senario tertentu, anda mungkin perlu menentukan nilai kunci primer secara manual. Ini boleh dicapai dengan menetapkan sifat $keyType dan $fillable dalam model. Contoh:
class Order extends Model { protected $keyType = 'string'; protected $fillable = ['order_id', 'product_name']; }
Di sini jenis kunci utama ditetapkan kepada rentetan dan medan boleh diisi ditentukan.
Ringkasan
Melalui kaedah di atas, masalah tiada kunci utama dalam model Laravel dapat diselesaikan. Dalam pembangunan sebenar, kaedah yang sepadan boleh dipilih mengikut keperluan khusus. Pada masa yang sama, perhatian perlu diberikan untuk memastikan keunikan kunci utama untuk mengelakkan kemungkinan konflik.
Atas ialah kandungan terperinci laravel menggesa bahawa tiada kunci utama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!