位置: 编程技术 - 正文

laravel学习教程之存取器(laravel learnku)

编辑:rootadmin

推荐整理分享laravel学习教程之存取器(laravel learnku),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:laravel入门教程pdf,laravel实战教程,laravel怎么学,laravel 入门教程,laravel 入门教程,laravel快速入门,laravel入门与实战,laravel入门与实战,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

Laravel是一个简单优雅的PHP Web开发框架,可以将开发者从意大利面条式的代码中解放出来,通过简单、高雅、表达式语法开发出很棒的Web应用,那下面跟着小编一起来学习laravel中的存取器吧。

Eloquent: 存取器简介

访问器和存储器允许你在获取或者设置 Eloquent 模型属性值时对其进行格式化操作。比如,你可能希望当一个值存储进数据库之前先对其进行 Laravel encrypter 进行加密操作,并且可以在你通过模型访问的时候自动的进行该属性的解密。

除了可自定义的的访问器和存储器,Eloquent 也可以自动的将日期字段转换为 Carbon 实例,或者甚至是将字符串字段转换为 JSON。

访问器 & 存取器

定义一个访问器

为了定义一个访问器,你需要在你的模型上创建一个 getFooAttribute 方法,其中的 Foo 是你需要进行访问的列名的驼峰方式的命名。在这个例子中,我们将定义一个 first_name 属性的访问器。这个访问器会在 Eloquent 尝试获取 first_name 属性值时触发:

就如你所看到的,属性原始的值会被传递到访问器中,这允许你对原始值进行操作及返回格式化后的值。你只需要简单的访问 first_name 属性就可以从存取器中访问该值:

定义一个存储器

为了定义一个存储器,你需要在你的模型上定义一个 setFooAttribute 方法,其中的 Foo 是你期望访问的列的驼峰样式的名称。那么,这一次,让我们为 first_name 属性定义一个存储器。这个存储器会在模型尝试设置 first_name 属性的值时进行调用:

laravel学习教程之存取器(laravel learnku)

存储器会接收即将设置到属性中的值,这允许你对这个值进行操作,并将其设置到模型内部的 $attributes 属性中。所以,举个示例,如果我们尝试将 first_name 属性设置为 Sally:

在这个例子中,setFirstNameAttribute 方法会被调用并伴随 Sally 值。存储器会应用 strtolower 方法将名字小写化然后将值设置到内部的 $attributes 数组中。

日期存取器

默认的,Eloquent 会转换 created_at 和 updated_at 列为 Carbon 实例,这个实例可以提供多种有用的方法,并且它继承自原生 PHP 的 DataTime 类。

你可以自定义哪些字段可以进行自动的转换,甚至是完全禁用这种转换,你需要在你的模型中复写 $dates 属性:

当一列被认为是日期时,你可以将其设置为 UNIX 时间戳,日期字符串(Y-m-d),时间字符串,和 DateTime / Carbon 实例,并且日期的值会自动的正确的存储到数据库中:

就如上面所述,当获取的属性是 $dates 属性所列出的值之一时,它会自动的被转换为 Carbon 实例,这允许你在属性上使用 Carbon 的一些方法:

默认的,时间戳被格式化为 Y-m-d H:i:s 的格式。如果你希望自定义时间戳的格式,你需要在你的模型中设置 $dateFormat 属性。该属性将确定日期属性将如何存储到数据库中以及当模型进行序列化或者 JSON 化时如何展示:

属性转换

你可以在你的模型中定义 $casts 属性来提供一种方便的方式将属性转换为通用的数据类型。$casts 属性应该是一个数组,并且其每一项的键应该是需要进行转换的属性名,而其键所对应的值应该是你需要属性转换到的类型。支持的转换类型有:integer,real,float,double,string,boolean,object,array,coolection,date,datetime,和 timestamp。

比如,让我们转换 is_admin 属性,它在数据库中存储的值为一个整型(0 或者 1),我们将其转换为布尔值:

现在,每当你访问 is_admin 属性时,其值都会被转换为布尔值,即使其在数据库中存储的整型值:

数组转换

array 转换的类型对于存储序列化 JSON 值的列尤其有用。比如,如果数据库有一个 TEXT 类型的字段,并且其存储的是序列化的 JSON,如果你添加该属性的 array 转换,那么当你在 Eloquent 模型上访问这个属性时,它将会自动的进行反序列化为 PHP 的数组:

当你转义定义完成之后,你可以访问 options 属性,并且它会自动的被从 JSON 反序列化为 PHP 数组。当你设置值到 options 属性时,所给定的数组会自动的序列化为 JSON 格式,然后进行存储:

标签: laravel learnku

本文链接地址:https://www.jiuchutong.com/biancheng/275001.html 转载请保留说明!

上一篇:简单解析PHP程序的运行流程(php解析原理)

下一篇:laravel学习教程之关联模型(laravel快速入门)

  • 个人去税务局开劳务费怎么交税
  • 税收筹划的内容主要包括
  • 企业收到保险公司赔偿款是否要交税
  • 金税盘不用了之后要抄报税吗
  • 已启动申报比对异常申报,可以作废嘛清卡吗
  • 汇算清缴结束后,税务机关发现企业应当取得
  • 企业预缴的增值税收入算不算企业的销售收入
  • 车辆报废收入如何处理
  • 员工借款怎么入账
  • 报名费发票开什么项目
  • 高速公路的发票怎么补
  • 上海航交所官网
  • 工资不在本公司发票报销可以吗?
  • 电子发票可以打多少行
  • 预缴两个点的税是什么意思
  • 营改增后房产税计税依据及计算方式
  • 季度营业额超过6万需要补税
  • 集团统借统还利息
  • 小企业怎么申请建设用地
  • 购买用于产品设计拍摄的道具怎么做账?
  • 打印企业银行流水需要密码吗
  • 报税时利润表没写怎么办
  • 个人所得税哪些可以专项扣除
  • 税金及附加多计提所得税年报怎么更正
  • CENTOS7安装报错
  • mt-mon.exe
  • 一般纳税人购进农产品如何抵扣进项税额
  • 销售货物是什么意思
  • 野生动物保护区有哪些
  • removed.exe - removed是什么进程 有什么用
  • 迷迭香的养殖方法
  • 金融机构与小微企业借款合同印花税
  • 存货怎么预估
  • 地税增值税税率是多少
  • vue中el-dialog
  • 阿尔瓦罗西萨
  • thinkphp 部署
  • 基于SadTalker的AI主播,Stable Diffusion也可用
  • 总结php删除字符的方法
  • rsync连接
  • 库存商品的盘盈盘亏
  • 基本户理财产品有哪些
  • 出口退税未按期申报怎么办
  • 母公司为子公司提供担保是利好吗
  • 余额百分比法计提坏账准备
  • 核定扣除投入产品怎么算
  • 采用权益法核算的长期股权投资时,对于被投资企业
  • 增值税加计抵减怎么算
  • 购买货物收到发票怎么做账小规模
  • 未开发票如何确认收入并进行申报?
  • 公司注销前欠客户钱
  • 实际成本法如何核算
  • 对公账户转私人账户
  • 购入固定资产如何交所得税
  • 固定资产大修理支出摊销年限
  • 一般纳税人增值税怎么做账务处理
  • 银行汇票计入什么会计科目
  • 资产减值损失科目
  • 什么是暂估入库核算
  • 以银行存款支付所欠税金48000
  • 汇算清缴水电费没有发票填在哪里
  • 附加税减免需要转营业外收入吗
  • 电汇凭证是什么会计科目
  • 公司购买购物卡账务处理
  • sql server m1
  • windows2008 2016
  • 主板各个系列详解
  • Windows PC用iCloud多设备共享数据图文教程
  • win8在哪里卸载软件
  • xp系统能用谷歌吗
  • linux挂载步骤
  • ajax请求数据放到页面
  • Android-ViewPager使用示例
  • python3.9多线程
  • unity接收udp
  • unity gpu优化
  • 贵州新农合可以打电话停保吗
  • 建行信用卡怎么提额
  • 公司被税务查账对不上
  • 法规处职责要点和底线清单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设