如何在laravel模型中限制重复的主键?

时间:2019-05-17 06:15:15

标签: laravel primary-key

我正在做一个laravel项目,在其中我设置了一个自定义主键。但是,该项目允许两个不同的条目在设置为主键的字段中具有相同的值。我该如何限制呢?

我已将模型上的公共$ incrementing属性设置为false,还将受保护的$ keyType属性设置为string。

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

我希望如果我输入两条记录,代码将引发错误,在'reg_no'字段(定义为primary)中将具有相同的值,但是该记录将被保存而没有错误。

2 个答案:

答案 0 :(得分:1)

无法猜测为什么要这样更改主键,但是可以:

  • 在迁移中将列设置为唯一。
  • 使用唯一的验证规则来防止重复输入。

答案 1 :(得分:0)

您可以在迁移中将其设置为唯一

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

有关更多信息:https://laravel.com/docs/5.8/migrations#creating-indexes