Как я могу ограничить дублирование первичного ключа в модели Laravel? - PullRequest
0 голосов
/ 17 мая 2019

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

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

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

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

Ответы [ 2 ]

1 голос
/ 17 мая 2019

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

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

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

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

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

...