Я работаю над проектом laravel, в котором я установил собственный первичный ключ. Однако проект позволяет двум разным записям иметь одно и то же значение в поле, установленном в качестве первичного ключа. Как это ограничить?
Я установил для публичного свойства $incrementing в моей модели значение false, а также установил для защищенного свойства $keyType значение string.
class Students extends Model
{
protected $primaryKey = 'reg_no';
public $incrementing = false;
protected $keyType = 'string';
}
Я ожидал, что код вызовет ошибку, если я введу две записи с одинаковым значением в поле «reg_no», которое определено как основное, но запись сохраняется без ошибки.
Именно в вашей декларации миграции вы применяете ограничение первичного ключа.
Добавление уникального ограничения в мою миграцию сработало для меня. Спасибо!






Вы можете установить его уникальным в своей миграции
Schema::table('students', function($table)
{
$table->string('reg_no')->unique();
});
Для получения дополнительной информации: https://laravel.com/docs/5.8/migrations#creating-indexes
Разве уникальное ограничение не отличается от первичного ключа?
@OluwatobiSamuelOmisakin любой уникальный индекс может быть первичным ключом. Правила Кодда
Не могу догадаться, почему вы так меняете первичный ключ, но вы можете:
Можете ли вы добавить миграцию для своей таблицы
students?