Laravel Schema Builder |独特的区分大小写列

时间:2017-02-04 19:02:10

标签: php mysql laravel

我正在使用Laravel的模式构建器和mysql来创建一个唯一的列。但是当我使用独特的方法时,它是不敏感的。我需要它是敏感的案例。我怎样才能做到这一点?

架构:

Schema::create('item', function (Blueprint $table) {
    $table->increments('id');
    $table->string('key')->unique();
    $table->timestamps();
});

首次进入数据库:

$i = new Item;
$i->key = "Random_Key";
$i->save();

第二次进入数据库(返回重复输入错误):

$i = new Item;
$i->key = "random_key";
$i->save();

2 个答案:

答案 0 :(得分:3)

您需要使用character sets and collations来指定case sensitive columns in mySQL

为此,Laravel在mySQL中有collate and charset column modifiers

因此,您可以使用类似:$table->string('key')->charset('utf8')->collate('utf8_cs')->unique()

的内容

正如OP所说,这对他有用:

$cs = $table->string('key')->unique();

$cs->collation = 'utf8_bin';

答案 1 :(得分:0)

如何设置VARBINARY列的类型?

DB::statement('ALTER TABLE item MODIFY id VARBINARY(64);');