当前位置:首页 > 站长资讯 > 正文内容

【说站】laravel模型中的$casts属性转换

yc8882年前 (2022-07-22)站长资讯290

有些时候,部分字段需要存储json数据

按照以往的操作,在create的时候,先手动对特定的字段进行json_encode,然后再create

【说站】laravel模型中的$casts属性转换

update的时候,先手动json_decode,修改完毕后再json_encode,然后再update

想想都觉得麻烦,虽然可以使用laravel模型事件,在对应的creatingupdating的事件中去处理,但这也太大材小用了。

实际上模型中有casts属性可以帮我们完成这个功能。

从 Illuminate\Database\Eloquent\Model 找到 Illuminate\Database\Eloquent\Concerns\HasAttributes ,会发现有很多属性可供配置,

例如设置表名table,是否维护时间戳timestamps,可被批量赋值的属性fillable,主键字段名(默认idprimaryKey,主键字段类型(默认intkeyType,主键是否自增(默认是)incrementing,等等,这里主要说的是属性转换casts,在模型中设置一下即可:

PHP
/**
 * 类型转换
 * @var string[]
 */protected $casts = [
    'recharge => 'array',];

设置过后,从前端拿到的或者处理出来的字段array数据,就不需要手动去json_encodeupdate时候也不要管,会自动帮我们转为json数据进行存储。

但是需要注意的是,在create的时候会进行属性转换处理,但是在更新的时候,如果是直接使用update进行更新,则不会进行属性转换处理。

可参考:laravel模型事件-update触发updating和updated的问题

先使用first或者find获取模型后再操作即可,当然,updateOrCreate也可以。。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/zhanzhang/7404.html

标签: Laravel
分享给朋友:

“【说站】laravel模型中的$casts属性转换” 的相关文章

【说站】Excel如何快速删除空行?WPS删除excel空白行

【说站】Excel如何快速删除空行?WPS删除excel空白行

站长我经常会处理excel文档,之前介绍过Microsoft Office excel文档删除空行的办法,今天介绍WPS Office下面的excel如何删除空白行。方法一:筛选  选中数据所在的那一...

【说站】宝塔如何按日期每天生成一个网站日志文件

【说站】宝塔如何按日期每天生成一个网站日志文件

宝塔面板默认的会按照nginx.conf的配置生成在/www/wwwlogs目录下面生成一个网站访问日志和一个网站错误日志,每当有新的记录时系统会不断的对这两个文件进行写入操作,但随着访问量的增长,日...

【说站】判断服务器IP否被墙 是否被TCP阻断

【说站】判断服务器IP否被墙 是否被TCP阻断

现在国内很多购买国外主机服务器的,但往往很多主机商的机子用的人多了,国内使用者用这些服务器做啥的都有,正儿八经的做外贸其实没多大事情,但往往有些人就是不遵守法律法规,长此以往用的人多了,这些国外的主机...

【说站】宝塔面板上行下行 总发送 总接收是什么意思

【说站】宝塔面板上行下行 总发送 总接收是什么意思

下图是宝塔面板后台云服务器的上行速度、下行速度、总发送、总接收流量图,橘红色代表的是上行速度曲线,蓝色代表的是下行速度曲线,鼠标移动到一个时间点,会显示上行和下行的网速,右上角“全部”可以选择网卡。网...

【说站】帝国CMS设置支付宝网站支付功能详细教程

【说站】帝国CMS设置支付宝网站支付功能详细教程

帝国cms后台默认有支付宝接口,可以绑定支付宝,进行会员充值功能,本文说一下帝国cms网站绑定支付宝的方法。支付宝可以申请当面付、app支付、手机网站支付、电脑网站支付等,我们这里拿电脑网站支付简单说...

【说站】帝国CMS如何清空数据让栏目、文章id从1开始

【说站】帝国CMS如何清空数据让栏目、文章id从1开始

我们在用帝国CMS建站过程中,肯定要进行测试,当测试完之后,往往会有很多栏目和文章要删除,之后重新新建栏目和发布文章的时候会发现栏目id和文章id并不是从1开始的,这是因为之前的数据虽然被清空删除了,...