php 如何实现数据库表中多列的唯一约束?

8gsdolmq  于 9个月前  发布在  PHP
关注(0)|答案(5)|浏览(108)

我正在做一个Laravel项目,我有一个场景,我需要在数据库表中的多个列上强制执行唯一约束。具体来说,我想确保column1column2的组合是唯一的。我如何使用Laravel Eloquent和迁移来实现这一点?
下面是我的迁移文件的示例:

Schema::create('my_table', function (Blueprint $table) {
    $table->id();
    $table->string('column1');
    $table->string('column2');
    // ... other columns ...
    $table->timestamps();
});

字符串
我想根据column1column2中的值防止重复条目。在Laravel中实现这一点的最佳方法是什么?

c3frrgcw

c3frrgcw1#

在迁移文件中,为column1和column2添加唯一索引:

$table->unique(['column1', 'column2']);

字符串

ubof19bj

ubof19bj2#

$table->unique(['column1','column2']);

字符串

avwztpqn

avwztpqn3#

要在Laravel迁移中对多个列强制执行唯一约束,您可以在Schema facade中使用unique方法。以下是如何在迁移文件中实现这一点:

Schema::create('my_table', function (Blueprint $table) {
    $table->id();
    $table->string('column1');
    $table->string('column2');
    // ... other columns ...
    $table->timestamps();

    // Add a unique constraint on column1 and column2
    $table->unique(['column1', 'column2']);
});

字符串
通过将unique方法与列名数组一起使用,您可以对column1column2的组合实施唯一约束。当您运行迁移时,Laravel将在数据库中的这些列上创建唯一索引,以防止基于column1column2中的值的重复条目。
在添加唯一约束之后,如果你试图插入一个与现有记录相同的column1column2组合的记录,Laravel将抛出一个完整性约束违反错误,防止重复条目被添加到表中。

aij0ehis

aij0ehis5#

您可以在验证逻辑中执行此操作:

'column1' => 'required|unique:my_table,column1,NULL,id,column2,' . $this->input('column2'),

字符串

相关问题