تغيير المفتاح الأساسي الافتراضي في Eloquent
سؤال
هل يمكنني تغيير المفتاح الأساسي لنموذج Eloquent.
أريد تعيين المفتاح الأساسي على سبيل المثال admin_id
بدلاً من "المعرف"؟
أعلم أنه يمكنني تغيير اسم الجدول لنموذج مثل
protected $table = "admin";
هل هناك شيء مماثل للمفتاح الأساسي؟
المحلول
نعم
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
نصائح أخرى
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
لكن
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
لاحظ الحرف K (الحرف الكبير) على المتغير $primaryKey
متغير المفتاح الأساسي حساس لحالة الأحرف ويجب أن يكون كذلك $primaryKey
للعمل.
مثال:
protected $primaryKey = 'your_primary_key_id';
مثال داخل فئة النموذج:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
وفقًا لوثائق Laravel :
سيفترض Eloquent أيضًا أن كل جدول يحتوي على عمود مفتاح أساسي مسمى id
.يمكنك تحديد أ $primaryKey
خاصية لتجاوز هذه الاتفاقية.
بالإضافة إلى ذلك، يفترض Eloquent أن المفتاح الأساسي هو قيمة عددية متزايدة، مما يعني أنه افتراضيًا سيتم تحويل المفتاح الأساسي إلى int تلقائيًا.إذا كنت ترغب في استخدام مفتاح أساسي غير تزايدي أو غير رقمي، فيجب عليك تعيين المفتاح العام $incrementing
الملكية على النموذج الخاص بك إلى خطأ.
إذا كنت تريد استخدام مفتاح مركب (سلسلة)
تحتاج إلى التأكد من ضبطك public $incrementing = false
وإلا فإن Laravel سوف يلقي الحقل إلى عدد صحيح، مما يعطي 0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $timestamp = false;
}
لتعيين مفتاح أساسي يجب عليك ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}