(目录) 问题描述 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 编码问题