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 相关文章推荐
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
PHP中把错误日志保存在系统日志中(Windows系统)
Jun 23 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
浅析PHP7新功能及语法变化总结
Jun 17 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
php compact 通过变量创建数组
Nov 15 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
Laravel实现批量更新多条数据
Apr 06 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
python利用OpenCV2实现人脸检测
2020/04/16 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
目前最全的python的就业方向
2018/06/05 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
python画微信表情符的实例代码
2019/10/09 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
python 实现生成均匀分布的点
2019/12/05 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python中有帮助函数吗
2020/06/19 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
如何处理简单的PHP错误
2015/10/14 面试题
向领导表决心的话
2014/03/11 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
管理人员岗位职责
2015/02/14 职场文书
总经理年会致辞
2015/07/29 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android