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 相关文章推荐
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php模板中出现空行解决方法
Mar 08 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
php类的定义与继承用法实例
Jul 07 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
Yii2使用swiftmailer发送邮件的方法
May 03 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
php 生成签名及验证签名详解
Oct 26 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
PHP实现生成数据字典功能示例
May 24 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
php5.2时间相差8小时
2007/01/15 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
JS基础之undefined与null的区别分析
2011/08/08 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
Bootstrap栅格系统学习笔记
2016/11/25 Javascript
学习vue.js计算属性
2016/12/03 Javascript
详解JS对象封装的常用方式
2016/12/30 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
安装PyInstaller失败问题解决
2019/12/14 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
python反扒机制的5种解决方法
2021/02/06 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
酒店门卫岗位职责
2013/12/29 职场文书
大学生最新职业生涯规划书范文
2014/01/12 职场文书
高一政治教学反思
2014/01/28 职场文书
四年级数学教学反思
2014/02/02 职场文书
思想品德评语大全
2014/12/31 职场文书
承诺书范本大全
2015/05/04 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL