Могу ли я изменить первичный ключ модели Eloquent.
Я хочу установить первичный ключ, например, admin_id
вместо id?
Я знаю, что могу изменить имя таблицы для модели, например
protected $table = "admin";
Есть ли что-то подобное для первичного ключа?
$primarykey
должно быть$primaryKey
(заглавная буква K), иначе работать не будет.$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610class User extends Eloquent { protected $primarykey = 'admin_id'; }
но
class User extends Eloquent { protected $primaryKey = 'admin_id'; }
обратите внимание на букву K (заглавную) в переменной $ primaryKey
источник
Если вы хотите использовать составной ключ (строку)
Вам нужно убедиться, что вы установили,
public $incrementing = false
иначе laravel будет преобразовывать поле в целое число, давая0
class User extends Model { protected $primaryKey = 'my_string_key'; public $incrementing = false; }
источник
Переменная первичного ключа чувствительна к регистру и должна
$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'; }
источник