Ответ 1
Да
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
Могу ли я изменить первичный ключ модели Eloquent.
Я хочу установить первичный ключ, например admin_id
вместо '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
на вашей модели значение false.
Чтобы назначить первичный ключ, вы должны...- >
class User extends Eloquent {
protected $primaryKey='admin_id';
}