Чи можу я змінити первинний ключ моделі Eloquent?
Я хочу встановити первинний ключ, наприклад, admin_id
замість "id"?
Я знаю, що можу змінити назву таблиці на зразок моделі
protected $table = "admin";
Чи є щось подібне для первинного ключа?
Чи можу я змінити первинний ключ моделі Eloquent?
Я хочу встановити первинний ключ, наприклад, admin_id
замість "id"?
Я знаю, що можу змінити назву таблиці на зразок моделі
protected $table = "admin";
Чи є щось подібне для первинного ключа?
Відповіді:
Так
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
$primaryKey = array('key1', 'key1');
github.com/laravel/framework/issues/5517#issuecomment-52996610
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
але
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
зверніть увагу на букву К (велика) на змінну $ 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';
Приклад у класі Model:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
Відповідно до документації Laravel:
Красномовний також припустить, що кожна таблиця має стовпець первинного ключа з іменем id
. Ви можете визначити $primaryKey
властивість, щоб замінити цю конвенцію.
Крім того, Eloquent припускає, що первинний ключ - це ціле значення, що збільшується, що означає, що за замовчуванням первинний ключ буде автоматично переданий до int. Якщо ви хочете використовувати неінкрементний або нечисловий первинний ключ, ви повинні встановити загальнодоступне $incrementing
властивість у вашій моделі на false.
Щоб призначити первинний ключ, слід ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}
$primarykey
має бути$primaryKey
(велика літера К) і інакше не працюватиме.