当前位置 : 主页 > 网络编程 > PHP >

PHP:Laravel cast array json数据存数据库时unicode 编码问题

来源:互联网 收集:自由互联 发布时间:2023-09-03
(目录) 问题描述 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 编码问题
【本文转自:韩国cn2服务器 http://www.558idc.com/kt.html欢迎留下您的宝贵建议】
网友评论