سؤال

هل يمكنني تغيير المفتاح الأساسي لنموذج 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';

 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top