我正在使用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();
答案 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);');