如何使用 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
文件中,确保将charset
和collation
设置为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 哪个更好?