首页 > 解决方案 > 如何创建唯一索引,这需要一组属性是唯一的?

问题描述

你好堆栈溢出器

我想出了一个关于 Laravel 的问题,我不确定如何解决它。

情况如下:

我得到了一个名为“地址”的迁移:

Schema::create('adresses', function (Blueprint $table) {
    $table->id();
    $table->string('adress'); //adress
    $table->integer('houseNumber'); //house number
    $table->string('houseNumberAddition')->nullable(); //house number addition
    $table->timestamps();
});

我想要实现的目标:我希望地址、houseNumber 和 houseNumberAddition 一起成为 1 个唯一值。

通常您会添加 unique() 函数,以使特定字段唯一。但我希望将 adress、houseNumber 和 houseNumberAddition 组合在一起,成为一个唯一值。

(因为 houseNumber 和 houseNumberAddition 将被多次使用,而与 adress、houseNumber 和 houseNumberAddition 的组合在我的数据库中只存在一次。)

我希望有人有一些花哨的技巧来解决这个问题。

感谢您的帮助!

戴夫

标签: laraveldatabaseeloquent

解决方案


您可以将 3 列组合在一个唯一索引中

$table->unique(['adress', 'houseNumber', 'houseNumberAddition']);

推荐阅读