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选项与信息函数的使用详解
May 10 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php环境下利用session防止页面重复刷新的具体实现
Jan 09 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
PHP简单计算两个时间差的方法示例
Jun 20 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
Sep 30 PHP
laravel框架实现去掉URL中index.php的方法
Oct 12 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知道与问问的采集插件代码
2010/10/12 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
PHP xpath()函数讲解
2019/02/11 PHP
用javascript作一个通用向导说明
2011/08/30 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
js禁止表单重复提交
2017/08/29 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
python学习必备知识汇总
2017/09/08 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python爬取微信公众号文章的方法
2019/02/26 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
Python目录和文件处理总结详解
2019/09/02 Python
Python使用微信接入图灵机器人过程解析
2019/11/04 Python
python创建n行m列数组示例
2019/12/02 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python同时迭代多个序列的方法
2020/07/28 Python
python实现经纬度采样的示例代码
2020/12/10 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
班组安全员工作职责
2014/02/01 职场文书
六五普法规划实施方案
2014/03/21 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
申报优秀教师材料
2014/12/16 职场文书
2015年财务人员工作总结
2015/04/10 职场文书