如何使列唯一并在Laravel Migration中将其编入索引?

ior*_*ori 7 laravel laravel-4

我想alter我的一张column桌子上的东西 - 让它们变成一张unique index.

我试过了 :

public function up()
    {
        Schema::table('inventories', function($table)
        {

            $table->string('sku',255)->unique();

        });
    }
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

最有效的方法是什么?

luk*_*ter 18

您可以从其定义中单独添加索引.如此处所述

Schema::table('inventories', function($table)
{
    $table->unique('sku');
});
Run Code Online (Sandbox Code Playgroud)

  • 以下是如何扭转这种情况:`$table->dropUnique('inventories_sku_unique');` (4认同)

ior*_*ori 0

我得到了它。

我这样做了:

public function up()
{           
    DB::update('alter table `inventories` modify `sku` VARCHAR(200) UNIQUE NOT NULL');
}
Run Code Online (Sandbox Code Playgroud)

现在它可以工作了:

在此输入图像描述

  • 您最终使用了直接的 MySQL 而不是 Eloquent 函数。这不是使用框架时的最佳实践。使用 Eloquent 的好处之一是代码与语言无关,这意味着它可以与许多数据库系统一起使用。提供的另一个答案要好得多,因为它实际上使用了雄辩。 (2认同)