我正在使用 Laravel 的架构构建器和 mysql 来创建一个唯一的列。但是当我使用 unique 方法时,它不区分大小写。我需要区分大小写。我怎样才能做到这一点?
架构:
Schema::create('item', function (Blueprint $table) {
$table->increments('id');
$table->string('key')->unique();
$table->timestamps();
});
Run Code Online (Sandbox Code Playgroud)
第一次进入数据库:
$i = new Item;
$i->key = "Random_Key";
$i->save();
Run Code Online (Sandbox Code Playgroud)
第二次进入数据库(返回重复输入错误):
$i = new Item;
$i->key = "random_key";
$i->save();
Run Code Online (Sandbox Code Playgroud)
您需要使用字符集和排序规则在 mySQL 中指定区分大小写的列
为此,Laravel在 mySQL 中有collate 和 charset 列修饰符
所以,你可以使用类似的东西: $table->string('key')->charset('utf8')->collate('utf8_cs')->unique()
正如 OP 所说,这对他有用:
$cs = $table->string('key')->unique();
$cs->collation = 'utf8_bin';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2369 次 |
| 最近记录: |