laravel 之 Eloquent 模型修改器和序列化示例


Posted in PHP onOctober 17, 2019

修改器

获取

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
 public function getFirstNameAttribute($value) {
  return ucfirst($value);
 }
}

使用 Laravel 加密器 来加密一个被保存在数据库中的值,当你从 Eloquent 模型访问该属性时该值将被自动解密。

$user = App\User::find(1);
$firstName = $user->first_name;

修改

public function setFirstNameAttribute ($value) {
 $this->attributes['first_name'] = strtolower($value);
}
$user = App\User::find(1);
$user->first_name = 'Sally';

日期转化器

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model{
 protected $dates = [
  'created_at',
  'updated_at',
  'deleted_at'
 ];
}
$user = App\User::find(1);
$user->deleted_at = Carbon::now();
$user->save();

可在属性上使用任何 Carbon 方法:

$user = App\User::find(1);
echo $user->deleted_at->getTimestamp();

设置时间格式

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model {
 protected $dateFormat = 'U';
}

属性类型转化

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
 protected $casts = [
  'is_admin' => 'boolean',
 ];
}

现在当你访问 is_admin 属性时,它将会被转换成布尔值,即便保存在数据库里的值是一个整数:

$user = App\User::find(1);
if ($user->is_admin) {
 //
}

支持的转换的类型有:

integer
real
float
double
string
boolean
object
array
collection
date
datetime
timestamp

# protected $casts = [
#  'options' => 'array',
# ];

$user = App\User::find(1);
$options = $user->options;
$options['key'] = 'value';
$user->options = $options;
$user->save();

序列化模型或集合

序列化成数组

$user = App\User::with('roles')->first();
return $user->toArray();

序列化成 JSON

$user = App\User::find(1);
return $user->toJson();
// 或者
return (string) $user; // 自动调用 toJson
// 或者
return App\User::all();

隐藏来自 json 的属性

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class User extends Model {
 protected $hidden = ['password'];
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class User extends Model {
 protected $visible = ['first_name', 'last_name'];
}

临时隐藏

return $user->makeVisible('attribute')->toArray();
return $user->makeHidden('attribute')->toArray();

添加参数到 json 中

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;

class User extends Model {
 protected $appends = ['is_admin'];
}
# 在 appends 数组中的属性也遵循模型中 visible 和 hidden 设置
public function getIsAdminAttribute() {
 return $this->attributes['is_admin'] == 'yes';
}

以上这篇laravel 之 Eloquent 模型修改器和序列化示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
php执行sql语句的写法
Mar 10 PHP
php session和cookie使用说明
Apr 07 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 #PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 #PHP
解决laravel查询构造器中的别名问题
Oct 17 #PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 #PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 #PHP
解决laravel5.4下的group by报错的问题
Oct 16 #PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 #PHP
You might like
thinkphp整合微信支付代码分享
2016/11/24 PHP
类似GMAIL的Ajax信息反馈显示
2010/02/16 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
用Jquery重写windows.alert方法实现思路
2013/04/03 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
2020/07/02 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
Python远程方法调用实现过程解析
2020/07/28 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
酒店司机岗位职责
2013/12/14 职场文书
上课迟到检讨书
2014/02/19 职场文书
技校毕业生自荐信
2014/06/03 职场文书
学校交通安全责任书
2014/08/25 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
女性健康知识讲座主持词
2015/07/04 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
详解python的异常捕获
2022/03/03 Python