我想更改“about_me
”列中“users
”列的排序规则。为此,我使用下面的代码。我只是将排序规则更改为utf8mb4_unicode_ci
,但代码无效。
public function up()
{
if (Schema::hasColumn("users", "about_me")) {
Schema::table("users", function(Blueprint $table) {
$table->collation = 'utf8mb4_unicode_ci';
$table->charset = 'utf8mb4';
});
}
}
我已经在/config/database.php中更改了,这有助于我将数据保存在db中但是在获取数据库之后,我发现特殊符号没有显示,当我将该列的排序更改为utf8mb4_unicode_ci然后它工作得很好。但我想在迁移中实现它。当前代码无效,我需要正确的代码才能正常运行。
答案 0 :(得分:8)
Laravel支持为MySQL修改每列的归类。对于表格范围的修改,您需要编写原始查询。
public function up()
{
DB::statement("ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
}
答案 1 :(得分:0)
在现代 Laravel 中,可以在表或列上设置字符集和排序规则。
https://laravel.com/docs/8.x/migrations#database-connection-table-options
// You can change table.
Schema::table('users`', function (Blueprint $table) {
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
// You can change on a field of a table.
Schema::table('users', function (Blueprint $table) {
$table->string('about_me')->charset('utf8mb4')->collation('utf8mb4_unicode_ci')->change();
});