首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用laravel更新列排序规则

使用laravel更新列排序规则
EN

Stack Overflow用户
提问于 2019-06-26 18:18:09
回答 3查看 5.6K关注 0票数 5

我的表中有一个case-insensitive排序规则列。

代码语言:javascript
复制
col_name : hash_id, collation : utf8mb4_unicode_ci

当我只搜索前者时,我会得到yA2JeGsYA2JeGs的结果。

因此,我需要更新排序规则以确保该列的case-sensitivity

我尝试更改该列的排序规则,创建一个新的migration文件:

代码语言:javascript
复制
public function up()
{
    Schema::table('product_match_unmatches', function (Blueprint $table) {
        $table->string('hash_id')->collate('utf8mb4_bin')->change();
    });
}

还可以使用$table->string('hash_id')->collation('utf8mb4_bin')->change();

迁移运行成功,但排序规则保持不变。

我如何在laravel中做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2019-06-26 18:30:04

您需要使用laravel schema builder创建新的迁移并使列区分大小写,代码如下:

代码语言:javascript
复制
$table->string('columName')->collation('utf8_bin')->change();

https://laravel.com/docs/7.x/migrations

票数 7
EN

Stack Overflow用户

发布于 2019-06-26 18:47:42

您可以在查询时转换归类

代码语言:javascript
复制
Model::where(\DB::raw('hash_id COLLATE utf8mb4_bin'), 'yA2JeGs');

但是,您可能应该更改表本身的排序规则,因为不区分大小写的排序规则似乎是最初在该字段上使用的错误排序规则。

注意: MySQL没有utf8mb4_general_cs排序规则。但是,如果您只使用ASCII哈希码,那么utf8mb4_bin应该就足够好了。

票数 1
EN

Stack Overflow用户

发布于 2020-04-02 04:16:34

我只能使用原始查询来更改排序规则,Blueprint change()方法对我没有任何作用,除非我也更改了字段类型。

这对我很有效:

代码语言:javascript
复制
public function up()
{
    DB::statement("ALTER TABLE tableName MODIFY columnName VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56770416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档