如何使用 Laravel 和 Orm Query 将表情符号字符串存储在数据库中

Posted

技术标签:

【中文标题】如何使用 Laravel 和 Orm Query 将表情符号字符串存储在数据库中【英文标题】:How to store emoji string in Database using Laravel with Orm Query 【发布时间】:2016-07-28 12:45:36 【问题描述】:

我想在数据库中存储特殊字符,反之亦然,例如情感,但是当我尝试在数据库中保存时,我得到问号。

【问题讨论】:

【参考方案1】:

在您的database.php 文件中,确保将charsetcollation 设置为utf8mb4

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',

你的表情列应该是一个字符串:

$table->string('emoji');

【讨论】:

database.php 在 laravel 5 中的位置在哪里? config 文件夹中的@Webinan 哦,我正在使用 Lumen,但我没有名为 config 的文件夹。 @Webinan 在这种情况下,根据 Lumen 文档:you may use the DB_* configuration options in your .env configuration file to configure your database settings, such as the driver, host, username, and password. 谢谢! DB_CHARSET + DB_COLLECTION 完成了这项工作。 :*【参考方案2】:

1) 确保您使用的是 MYSQL 5.5.3 或更高版本,然后您可以将排序规则更改为 utf8mb4_something,

2) 确保将要接收表情符号的表列的排序规则设置为 utf8mb4_something

如果仍有问题,请编辑您的 database.php 配置文件并更新以下内容,

    'charset' = 'utf8mb4';
'collation' = 'utf8mb4_unicode_ci'

【讨论】:

【参考方案3】:

除了上面的答案,请确保清除缓存并迁移刷新以更新 MySQL 表。

【讨论】:

【参考方案4】:

如果您使用 websocket 进行聊天和发送表情,则必须重新启动 websocket。

你可以找到并杀死所有的 websocket 进程,比如 sudo kill (Your PID) 不带圆括号。

对于 ?标记,没关系,因为某些浏览器或 MySQL 编辑器不支持表情符号,所以它们会显示问题 (?) 标记。

【讨论】:

以上是关于如何使用 Laravel 和 Orm Query 将表情符号字符串存储在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent ORM 与 Query builder 哪个更好?

Laravel Eloquent ORM 的本地作用域

laravel如何打印orm封装的sql语句

laravel ORM 模型关联 with () 用法

如何在我的 Eloquent ORM laravel 选择中包含一个过程?

laravel orm where 条件中 mysql函数 怎么用