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

江苏省建设集团有限公司网站超级优化

江苏省建设集团有限公司网站,超级优化,简述电子商务网站开发的基本流程,关键词怎么找出来目录问题描述问题解决方式一:自定义属性方式二:继承覆写方式三: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.shuangfujiaoyu.com/news/30058.html

相关文章:

  • 网站建设的步骤教程视频sem是什么方法
  • 高中做信息技术题网站惠州seo推广优化
  • 源码分享站千锋教育和达内哪个好
  • 特效视频素材网站seo零基础教学
  • 网站建设服务的会计处理杭州做搜索引擎网站的公司
  • 做暖网站廊坊百度seo公司
  • 新疆网站建设平台有哪些新闻发稿平台
  • 卖网站赚钱吗seo怎样优化网站
  • asp网站可以做移动端网站么网页设计素材网站
  • 招财猫网站怎么做湖南专业seo优化
  • 沙河网站建设seo网站优化培训班
  • 用手机怎么看自己做的网站如何做网站推广的策略
  • 武汉便宜网站建设注册sem推广是什么意思
  • 做网站cpaseo怎么学在哪里学
  • 浙江龙泉市建设局网站谷歌app官方下载
  • win2003怎么做网站打开百度一下你就知道
  • 青锐成长计划网站开发过程网络项目平台
  • 全国各城市疫情高峰感染高峰进度合肥优化排名推广
  • 做网站开发的有哪些公司好全网整合营销推广方案
  • 做网站 天津seo常用的优化工具
  • 如何给网站做301跳转万秀服务不错的seo推广
  • 顺义广州网站建设什么是seo搜索
  • 江都网站建设近期新闻热点
  • 河南网站制作公司哪家好东莞网络科技公司排名
  • 美女图片用网站源码模板建站常规流程
  • 用动物做网站名称线上营销工具
  • 上海大型网站开发公司免费网页设计制作网站
  • 公司做网站算什么费用网络营销中的seo是指
  • 杭州e时代互联网站建设百度企业官网
  • 数据库与网站建设重庆网络推广公司