Как я могу ограничить дублирование первичного ключа в модели laravel?

Я работаю над проектом laravel, в котором я установил собственный первичный ключ. Однако проект позволяет двум разным записям иметь одно и то же значение в поле, установленном в качестве первичного ключа. Как это ограничить?

Я установил для публичного свойства $incrementing в моей модели значение false, а также установил для защищенного свойства $keyType значение string.

class Students extends Model
{
    protected $primaryKey = 'reg_no';
    public $incrementing = false;
    protected $keyType = 'string';
}

Я ожидал, что код вызовет ошибку, если я введу две записи с одинаковым значением в поле «reg_no», которое определено как основное, но запись сохраняется без ошибки.

Можете ли вы добавить миграцию для своей таблицы students?

Rwd 17.05.2019 08:19

Именно в вашей декларации миграции вы применяете ограничение первичного ключа.

Oluwatobi Samuel Omisakin 17.05.2019 08:24

Добавление уникального ограничения в мою миграцию сработало для меня. Спасибо!

Mutevu 17.05.2019 08:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
3
350
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете установить его уникальным в своей миграции

Schema::table('students', function($table)
{
    $table->string('reg_no')->unique(); 
});

Для получения дополнительной информации: https://laravel.com/docs/5.8/migrations#creating-indexes

Разве уникальное ограничение не отличается от первичного ключа?

Oluwatobi Samuel Omisakin 17.05.2019 08:24

@OluwatobiSamuelOmisakin любой уникальный индекс может быть первичным ключом. Правила Кодда

Aditya Thakur 17.05.2019 08:29

Не могу догадаться, почему вы так меняете первичный ключ, но вы можете:

  • Установите столбец как уникальный в миграции.
  • используйте уникальное правило проверки, чтобы предотвратить повторную запись.

Другие вопросы по теме