如何解决Laravel将JSON数组存数据库时Unicode编码问题?

2026-04-02 03:071阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计302个文字,预计阅读时间需要2分钟。

如何解决Laravel将JSON数组存数据库时Unicode编码问题?

(目录)+ 问题描述 + Model示例 + class UserModel extends Model { protected $table='tb_user'; protected $casts=[ 'alias'='array' ]; } + 直接存储alias字段,数据库会显示unicode码 + 问题解决方式:自定义属性class U

(目录)

问题描述

Model示例

class UserModel extends Model { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; }

直接存alias 字段,数据库会显示unicode码

问题解决

方式一:自定义属性

class UserModel extends Model { public function setAliasAttribute($option) { $this->attributes['alias'] = json_encode($option, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); } }

方式二:继承覆写

class UserModel extends Model { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; // 覆盖asJson方法 protected function asJson($value) { return json_encode($value, JSON_UNESCAPED_UNICODE); } }

方式三:trait复用

trait UnicodeJsonTrait { /** * 序列化json * @param $value * @return false|string */ protected function asJson($value) { return json_encode($value, JSON_UNESCAPED_UNICODE); } }

直接在基类里使用(也可以在基类中覆写)

class BaseModel extends Model { use UnicodeJsonTrait; }

继承基类

class UserModel extends BaseModel { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; }

参考文章

  • Laravel5Model$catstoarrayutf-8JSON_UNESCAPED_UNICODE
  • PHP Laravel cast array 数据库存 json 时的 unicode 编码问题

如何解决Laravel将JSON数组存数据库时Unicode编码问题?

本文共计302个文字,预计阅读时间需要2分钟。

如何解决Laravel将JSON数组存数据库时Unicode编码问题?

(目录)+ 问题描述 + Model示例 + class UserModel extends Model { protected $table='tb_user'; protected $casts=[ 'alias'='array' ]; } + 直接存储alias字段,数据库会显示unicode码 + 问题解决方式:自定义属性class U

(目录)

问题描述

Model示例

class UserModel extends Model { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; }

直接存alias 字段,数据库会显示unicode码

问题解决

方式一:自定义属性

class UserModel extends Model { public function setAliasAttribute($option) { $this->attributes['alias'] = json_encode($option, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); } }

方式二:继承覆写

class UserModel extends Model { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; // 覆盖asJson方法 protected function asJson($value) { return json_encode($value, JSON_UNESCAPED_UNICODE); } }

方式三:trait复用

trait UnicodeJsonTrait { /** * 序列化json * @param $value * @return false|string */ protected function asJson($value) { return json_encode($value, JSON_UNESCAPED_UNICODE); } }

直接在基类里使用(也可以在基类中覆写)

class BaseModel extends Model { use UnicodeJsonTrait; }

继承基类

class UserModel extends BaseModel { protected $table = 'tb_user'; protected $casts = [ 'alias' => 'array' ]; }

参考文章

  • Laravel5Model$catstoarrayutf-8JSON_UNESCAPED_UNICODE
  • PHP Laravel cast array 数据库存 json 时的 unicode 编码问题

如何解决Laravel将JSON数组存数据库时Unicode编码问题?