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

php做网站多少钱知乎有趣的网站

php做网站多少钱,知乎有趣的网站,搜索引擎优化的七个步骤,网站如何做app目录问题描述问题解决方式一:自定义属性方式二:继承覆写方式三: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/86492/

相关文章:

  • 泉州网站建设公司首选公司哪家好域名更换网站
  • 安徽网站优化好不好猎头公司怎么找
  • 上海3d网站建设wordpress 安卓 管理
  • 做类似美团的网站wordpress中英文转换
  • 响应式网站什么用电商平台要投资多少钱
  • 越秀区做网站如何用asp做视频网站
  • 绵阳做网站的公司做破解软件网站赚广告费
  • 网站建设素材网WordPress头像美化插件
  • 网站上传发生一个ftp错误建设网站网上银行登录
  • 公司网络推广网站就选火13星仁德网站建设设计咨询
  • 网站运营作用专业seo站长工具
  • 如何查看网站图片尺寸wordpress著名 app
  • 郑州公司网站建设包头教育平台网站建设
  • 网站建设有什么费用网站如何备案icp
  • 成都网站设计推荐莱芜金点子广告电子版2022最新
  • 专门做恐怖电影网站建网站英语怎么说
  • 南宁建站模板大全成免费crm软件下载
  • 怎么选择邯郸做网站做百度竞价用什么网站
  • wordpress建站 防攻击易动力建设网站怎么样
  • 制作app教程视频全集单页网站 seo
  • 新乡网站搜索引擎优化app营销策略
  • 阿里云服务器创建网站吗做网站的的步骤怎么写
  • 酒店网站的开发及其设计方案大专毕业设计网站
  • 网站建设完成后如何备案链接交换
  • 腾讯 网站建设网站建设文化平台
  • 建设中网站首页佛山网站开发哪家好
  • 北京 网站设计公司物流网站建设推广
  • 母婴网站源码 带采集房屋结构自建设计 网站
  • 关于加强网站建设的建议工程与建设
  • 企业如何在网站做认证全网营销国际系统