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 相关文章推荐
PHP的可变变量名的使用方法分享
Feb 05 PHP
PHP 解决session死锁的方法
Jun 20 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 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
PHP中调用SVN命令更新网站方法
2015/01/07 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
js定时器实例分享
2016/12/20 Javascript
详解JS数值Number类型
2018/02/07 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
Python中的super()方法使用简介
2015/08/14 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python多线程同步之文件读写控制
2021/02/25 Python
使用Python发现隐藏的wifi
2020/03/04 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
怎么处理XML的中文问题
2015/03/26 面试题
门卫岗位安全职责
2013/12/13 职场文书
高中英语教学反思
2014/02/04 职场文书
十八届三中全会报告学习材料
2014/02/17 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript