当前位置: 首页 > news >正文

网站开发与维护项目招标微信分销商城平台系统

网站开发与维护项目招标,微信分销商城平台系统,珠海移动网站定制,php手机网站源码下载目录问题描述问题解决方式一:自定义属性方式二:继承覆写方式三:trait复用方式四:定义Cast子类update不生效参考文章问题描述 Model示例 class UserModel extends Model {protected $table tb_user;protected $casts [alias …

目录

    • 问题描述
    • 问题解决
      • 方式一:自定义属性
      • 方式二:继承覆写
      • 方式三:trait复用
      • 方式四:定义Cast子类
    • update不生效
    • 参考文章

问题描述

Model示例

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

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

["\u80c3\u75db\u554a"]

问题解决

方式一:自定义属性

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'];
}

方式四:定义Cast子类

<?phpnamespace App\Casts;use Illuminate\Contracts\Database\Eloquent\CastsAttributes;class JsonCast implements CastsAttributes
{public function get($model, string $key, $value, array $attributes){return json_decode($value, true);}public function set($model, string $key, $value, array $attributes){return json_encode($value, JSON_UNESCAPED_UNICODE);}
}

使用

<?phpnamespace App\Models;use App\Casts\JsonCast;
use Illuminate\Database\Eloquent\Casts\Attribute;class UserModel extends Model
{protected $table = 'tb_user';protected $casts = ['alias'            => JsonCast::class,];
}

update不生效

save/create可以正常触发数据转换,update的时候需要注意

平常更新数据是这样的

$this->where(xxx)->update(xxx)

需要注意的是,这样写不会触发updating和updated事件

需要先获取模型再进行对应的操作,才能触发对应的模型事件

$this->where(xxx)->first()->update(xxx)// 或
$this->find(xxx)->update(xxx)

参考文章

  • Laravel5Model$catstoarrayutf-8JSON_UNESCAPED_UNICODE
  • PHP Laravel cast array 数据库存 json 时的 unicode 编码问题
  • Laravel使用Casts转换类型
  • laravel模型事件-update触发updating和updated的问题
http://www.yayakq.cn/news/747017/

相关文章:

  • 厦门专业建站系统制作公司做网站的公司简介
  • 网站单页做301高端网站制作公司
  • 百度搜寻网站缩略图如何添加wordpress widgets
  • 网站建设物理架构企业网站内页设计
  • iis禁止通过ip访问网站物业公司网站建设策划书
  • 华龙区乡村网站建设个人建站做淘客网站备案
  • 化妆品公司网站源码网站建设氵金手指下拉十三
  • 长春做网站4435微信企业网站源码下载
  • 超级seo企业网站系统河北省城乡和建设厅网站
  • 淘宝做详情页代码网站网站服务公司代买空间有无义务
  • 可以自己做头像的网站杭州 网站建站
  • 广西自治区住房城乡建设部网站安卓开发自学教程
  • 网站方案特色选择简短网站建设的三个步骤是什么
  • 孝感网站开发培训机构无锡做公司网站的
  • 广元网站建设价格智慧团建注册登录入口下载
  • 长春网站网络公司php网站后台登陆不上
  • 论坛类网站搭建wap网站开发协议
  • 十大黄冈网站排行榜广州婚恋网站排名
  • 个股期权系统网站开发wordpress4.0慢
  • 社保网站上怎么做减员wordpress 分类 字段
  • 做男装去哪个网站好织梦网站系统删除
  • 付费网站建设广州网站关键词排名
  • 专门做灯具海报的网站wordpress首页调用图片
  • 西安 餐饮 网站建设顺企网怎么样
  • 商业十大网站长春做网站选长春万网
  • 南京网站关键词优化大学生html网页设计作业
  • 武进建设局网站效果图网站无缝连接
  • 网站模板使用教程淘宝网首页官网
  • 怎样做医院网站idc网站是用什么语言做的
  • 顺德品牌网站建设门户系统登录