一.查询构建器的get方法
查询构建器的get方法返回了一个集合$users = App\User::where('active', 1)->get();
foreach ($users as $user) {echo $user->name;
}二.访问器&调整器
1.访问器:为数据库的某列在用属性读取的时候做处理
class User extends Model{/*** 获取用户的名字** @param string $value* @return string*/public function getFirstNameAttribute($value){return ucfirst($value);}
}调用
$user = App\User::find(1);
$firstName = $user->first_name;2.调整器:为数据库的某一列在更新的时候做处理
class User extends Model{/*** 设置用户的名字** @param string $value* @return string*/public function setFirstNameAttribute($value){$this->attributes['first_name'] = strtolower($value);}
}$user = App\User::find(1);
$user->first_name = 'Sally';3.日期调整器
class User extends Model{/*** 应该被调整为日期的属性** @var array*/protected $dates = ['created_at', 'updated_at', 'disabled_at'];
...
}如果字段是日期格式时,你可以将其值设置为 UNIX 时间戳,日期字符串( Y-m-d ),日期-时间字符串, Datetime/Carbon 实例,日期的值将会自动以正确格式存储到数据库中:$user = App\User::find(1);
$user->disabled_at = Carbon::now();
$user->save();正如上面提到的,当获取被罗列在$dates 数组中的属性时,它们会被自动转化为Carbon 实例,允许你在属性上使用任何Carbon 的方法:
$user = App\User::find(1);
return $user->disabled_at->getTimestamp();如果你需要自定义时间戳格式,在模型中设置$dateFormat 属性,该属性决定日期属性将以何种格式存储在数据库中、以及序列化为数组或 JSON 时的格式class Flight extends Model{/*** 模型日期的存储格式** @var string*/protected $dateFormat = 'U';
}三.属性转换1.在访问时将某列转为另一种类型:
class User extends Model{/*** 应该被转化为原生类型的属性** @var array*/protected $casts = ['is_admin' => 'boolean', //访问is_admin字段的值时,将其转为boolean值];
}2.数组转换
array 类型转换在处理被存储为序列化 JSON 的字段是特别有用,例如,如果数据库有一个 TEXT 字段类型包含了序列化 JSON,添加array 类型转换到该属性将会在 Eloquent 模型中访问其值时自动将其反序列化为 PHP数组:class User extends Model{/*** 应该被转化为原生类型的属性** @var array*/protected $casts = ['options' => 'array',];
}array 类型转换在处理被存储为序列化 JSON 的字段是特别有用,例如,如果数据库有一个 TEXT 字段类型包含
了序列化 JSON,添加array 类型转换到该属性将会在 Eloquent 模型中访问其值时自动将其反序列化为 PHP
数组:$user = App\User::find(1);
$options = $user->options;
$options['key'] = 'value';
$user->options = $options;
$user->save();五.序列化1.转化模型/集合为数组
$user = App\User::with('roles')->first();
return $user->toArray();$users = App\User::all();
return $users->toArray();2.转化模型为 JSON
$user = App\User::find(1);
return $user->toJson();3.转为字符串
$user = App\User::find(1);
return (string) $user;转换后的格式如下:
{"id":1,"user_id":1,"name":"\u6700\u65b0\u6d4b\u8bd5","created_at":"2017-05-28 18:44:37","updated_at":"2017-05-31 23:37:55"}4.隐藏属性显示
class User extends Model{/*** 在数组中隐藏的属性** @var array*/protected $hidden = ['password'];
}5.显示属性
class User extends Model{/*** 在数组中显示的属性** @var array*/protected $visible = ['first_name', 'last_name'];
}6.追加值到数组
class User extends Model{/*** 为用户获取管理员标识** @return bool*/public function getIsAdminAttribute(){return $this->attributes['admin'] == 'yes';}
}这将在原有的列上添加一列is_admin,这需要通过属性访问时才会获得,如果我们希望在获得数据的时候被一起返回,则还需要append属性
class User extends Model{protected $appends = ['is_admin'];/*** 为用户获取管理员标识** @return bool*/public function getIsAdminAttribute(){return $this->attributes['admin'] == 'yes';}
}

  

转载于:https://www.cnblogs.com/itfenqing/p/6930437.html

Laravel之Eloquent ORM访问器调整器及属性转换相关推荐

  1. 【整理】Laravel中Eloquent ORM 关联关系的操作

    Laravel中Eloquent ORM 关联关系的操作 关联数据 定义关联关系 一对一 <?php class User extends Model{// 获取关联到用户的手机public f ...

  2. AgileEAS.NET之ORM访问器

    上一篇文章AgileEAS.NET之数据关系映射ORM简单介绍了一下AgileEAS.NET平台中ORM对象的组织机构体系,但并没有对其所执行的数据存取操作介绍,在AgileEAS.NET中,我对OR ...

  3. Laravel之Eloquent ORM

    一.ORM编程思想 1.1 Active Record 设计模式 Active Record 是一种数据访问设计模式,它可以帮助你实现数据对象Object到关系数据库的映射.应用Active Reco ...

  4. Laravel 的 Eloquent ORM学习

    创建模型 首先,创建一个 Eloquent 模型,生成的模型通常放在 app 目录中,但你可以通过 composer.json 随意地将它们放在可被自动加载的地方.所有的 Eloquent 模型都继承 ...

  5. php orm 内存泄漏,Lavarel Eloquent ORM常驻进程下的内存溢出问题

    Laravel 的 Eloquent ORM 提供了漂亮.简洁的 ActiveRecord 实现来和数据库交互.每个数据库表都有一个对应的「模型」用来与该表交互.你可以通过模型查询数据表中的数据,并将 ...

  6. 在ECSHOP中使用laravel框架的orm组件 简化ecshop的二次开发

    在长期的 ecshop二次开发中 我慢慢喜欢上了简单的php开发模式!可能是因为我最早是做前端开发的 ,php+smarty这种简单的组合让我更喜欢!要实现什么功能 只需要写个函数在 includes ...

  7. [转]Laravel 4之Eloquent ORM

    Laravel 4之Eloquent ORM http://dingjiannan.com/2013/laravel-eloquent/ 定义Eloquent模型 模型通常放在app/models目录 ...

  8. Laravel学习记录--访问器与修改器

    简介 当你在Eloquent模型实例中获取或设置某些属性值的时候,访问器和修改器允许你对Eloquent属性值进行格式化,访问器可在将要读取的数据进行处理后在返回给调用方,而修改器可在数据要被保存到数 ...

  9. Laravel 5.1 文档攻略——Laravel Eloquent ORM最强大也是最难理解的部分:数据关系...

    简介 其实大家都知道,数据表之间都是可以关联的,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: Eloquen ...

最新文章

  1. s-sar命令(System Activity Reporter系统活动情况报告)
  2. hdu 5037 Frog 贪心 dp
  3. Java操作ftp,上传,下载,删除操作
  4. 生产环境使用HBase,你必须知道的最佳实践
  5. es创建索引库报错 :Types cannot be provided in put mapping requests, unless the include_type_na
  6. 蓝桥杯 ADV-167算法提高 快乐司机(贪心算法)
  7. 济宁与华为企业云战略合作携手推进云计算产业发展
  8. 兔子进洞算法_下兔子洞:一个varnishreload错误的故事-第1部分
  9. win7系统修复工具_Windows Repair Pro v4.4.60 系统修复工具
  10. 【数据可视化】AntV L7实现地图可视化,DrillDownLayer钻取异步获取数据,悬浮预警框
  11. 【Deblurring by Realistic Blurring】阅读笔记
  12. Linux常用的设置文件安全上下文命令使用方法
  13. node.js解析微信消息推送xml格式加密的消息
  14. 【时间序列分析】差分运算及延迟算子的性质
  15. Vuzix的M100安卓智能眼镜和Google Glass不同
  16. 皮尔森相关性的相似度
  17. 数据治理系统解决方案浅析
  18. sqlite 表的列增加,修改,删除及表的重构和去重操作
  19. layui导出全部和下载模板
  20. 在服务器上建虚拟主机再建网站,在服务器上建虚拟主机再建网站

热门文章

  1. JetBrains打造的开发神器,一套代码适应多端!
  2. Gson:我爸是 Google
  3. 一份 Spring Boot 项目搭建模板
  4. Windows 给力!可以扔掉 Linux 虚拟机了!
  5. 哥们,你真以为你会做这道JVM面试题?
  6. 斯坦福AI 5小时DNA测序破世界纪录!创人类新里程碑,成本仅3万
  7. 现实版“神笔马良”!“90后”小伙把贫困村画成网红景点,网友:一个人带动整个村GDP...
  8. 北京大学,签约这个省份!
  9. 吴恩达教你如何读论文:绘制进度表格,论文至少看三遍,还要问自己问题
  10. 如何用数学追到完美情人?