Чи можу я змінити первинний ключ моделі 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(велика літера К) і інакше не працюватиме.