обновить сопоставление столбцов с помощью laravel - PullRequest
2 голосов
/ 26 июня 2019

У меня в таблице есть столбец сортировки case-insensitive.

col_name : hash_id, collation : utf8mb4_unicode_ci

Я получаю результаты для yA2JeGs и YA2JeGs, когда я ищу только предыдущие.

ИтакМне нужно обновить параметры сортировки, чтобы обеспечить case-sensitivity для этого столбца.

Я попытался изменить параметры сортировки для этого столбца, создав новый файл migration:

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?

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Вам необходимо создать новую миграцию и сделать регистр столбцов чувствительным, используя компоновщик схем laravel с кодом, указанным ниже:

$table->string('columName')->collate('utf8_cs')->change();

https://laravel.com/docs/5.8/migrations

1 голос
/ 26 июня 2019

Вы можете преобразовать параметры сортировки во время запроса

Model::where(\DB::raw('hash_id COLLATE utf8mb4_bin'), 'yA2JeGs');

Однако вам, вероятно, следует изменить параметры сортировки самой таблицы, поскольку кажется, что параметры сортировки без учета регистра - это неправильное сравнение, которое использовалось в этом поле для начала.

Примечание: MySQL не имеет параметров сортировки utf8mb4_general_cs. Однако, если вы используете только хэш-коды ASCII, тогда utf8mb4_bin должно быть достаточно.

...