Laravel 架构生成器 |独特的区分大小写的列

问题描述 投票:0回答:3

我正在使用 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();
php mysql laravel
3个回答
10
投票

您需要使用字符集和排序规则来指定mySQL中区分大小写的列

Laravel 在 mySQL 中具有 collate 和 charset 列修饰符 用于此目的

因此,您可以使用以下内容:

$table->string('key')->charset('utf8')->collate('utf8_cs')->unique()

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

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

$cs->collation = 'utf8_bin';

0
投票

设置列VARBINARY的类型如何?

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


0
投票

我在 Laravel 11 上有相同的配置文件,但以上都不起作用。我创建了一个新的迁移并添加了手动列更改。

public function up()
{
    DB::statement('ALTER TABLE unit_types MODIFY name VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin UNIQUE');
}

public function down()
{
    DB::statement('ALTER TABLE unit_types MODIFY name VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci UNIQUE');
}
© www.soinside.com 2019 - 2024. All rights reserved.