Laravel Eloquent ORM字段处理

追加属性append的使用

1、如果你的需要的数据,是根据数据库中的某个值,计算出来。可以appends中增加该属性,再定义一个访问器返回对应的结果

注:定义在模型类上,对所有的模型数据都会增加该属性。

2、如果只对部分数据需要的属性,可以在取出数据库值后再append
protected $appends = ['is_title '];

记录append的坑 append中使用的字段都要查询出来,title和name都要select出来,不然is_title 返回为空

class User extends Model
{#以下属性和方法都不是必须的,但是一般都要按需求定义一些//定义关联的表名,不定义的话默认此模型关联的表为 模型名s (users)protected $table = 'user';/******字段相关*******/#定义主键字段名,默认是idprotected $primaryKey = 'uid';#定义字段白名单,允许操作表中的哪些字段protected $fillable = ['uid','name'];#定义字段黑名单,不允许操作表中哪些字段protected $guarded = [];//1、使用model::create([])等方法直接对orm对象操作使,必须定义$guarded或者$fillable//2、使用$m = new model();然后$m->save()的方式不需要定义//3、简便的方式就是定义$fillable = [];#定义隐藏的字段protected $hidden = [];/******时间管理******/#定义是否默认维护时间,默认是true.改为false,则以下时间相关设定无效public $timestamps = true;#定义数据行创建时间和修改时间的字段名称。默认created_at,updated_at,没有设nullconst CREATED_AT = 'created';const UPDATED_AT = null;#此属性决定插入和取出数据库的格式,默认datetime格式,'U'是int(10)protected $dateFormat = 'U';//如果不设置,无论存储格式是datetime还是int,则取出时是Carbon对象//Carbon对象返给前端时自动变为datetime字符串,后端谨慎处理#如果数据库存的是datetime或者没定义$dateFormat,又想取出的时候是int...public function getDates(){return ['created_at'];}//这里只能是created_at,updated_at,不是你自己的字段#软删除字段deleted_atuse Illuminate\Database\Eloquent\SoftDeletes;protected $dates = ['deleted_at'];#查询数据时会自动排除掉deleted_at非null的数据,若向带上使用User::withTrashed()#删除某条数据时使用$user->delete()然后save()即可。deleted_at由null变为时间./******序列化******/#toArray和toJson就是序列化方法,都是递归的。#把ORM查询的数据自动转换。例如把int转boolean,时间戳转时间,json转成数组等。protected $casts = ['created'   => 'date:Y-m-d','updated'   => 'datetime:Y-m-d H:i','jsonData'  => 'array','intSwitch' => 'boolean'];//关于这个时间的序列化,当作为接口返回的时候有效,如果直接直接页面渲染无效.//时间序列化,当$timestamp为true时,无论是update还是new的方式插入新数据,都要是datetime//注意取出的jsonData即是数组,而插入jsonData时也得是数组,不要json_encode/**自定义数据返回***/#再如果,你想拿出来就是'2018/08/08 12:00'这种自定义格式,好比'sa_time'public function getSaTimeAttribute($value){return date('Y/m/d H:i',$value);}//注意方法名是根据字段来的。同理,这种方法可以处理任何字段//getxxAttribute 在获取xx属性的时候  $obj->xx 会转化  //setxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = 'value'的时候, 操作数据库之前 自动转化一下//存入之前的改变public function setFirstNameAttribute($value){$this->attributes['first_name'] = strtolower($value);}  //laravel 增加不存在数据库的字段//有时候您可能想要增加不存在数据库字段的属性数据。这时候只要定义一个获取器即可:public function getIsAdminAttribute(){return $this->attributes['admin'];}//定义好获取器之后,再把对应的属性名称加到模型里的 appends 属性:protected $appends = ['is_admin'];}

Laravel Eloquent ORM字段处理相关推荐

  1. 使用Laravel Eloquent ORM 时如何查询表中指定的字段

    我们在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在OR ...

  2. 使用Laravel Eloquent ORM 时如何查询表中指定的字段 1

    我们在使用Laravel ORM的Model方法find, get, first方法获取数据对象时返回的数据对象的attributes属性数组里会包含数据表中所有的字段对应的键值关系, 那么如何在OR ...

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

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

  4. Laravel Eloquent ORM 实例教程 —— 模型删除及软删除相关实现

    1.删除模型 1.1 使用delete删除模型 删除模型很简单,先获取要删除的模型实例,然后调用delete方法即可: $post = Post::find(5); if($post->dele ...

  5. Laravel Lumen之Eloquent ORM使用速查-基础部分

    使用Eloquent ['eləkwənt] 时,数据库查询构造器的方法对模型类也是也用的,使用上只是省略了DB::table('表名')部分. 在模型中使用protected成员变量$table指定 ...

  6. [转]Laravel 4之Eloquent ORM

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

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

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

  8. 解决laravel框架中Eloquent ORM的save方法无法插入数据的问题

    学习laravel中: 今天在测试使用Eloquent ORM将数据使用 save()方法插入到mysql中时,出现了错误,如图所示: 在网上查阅资料后找到了原因: 使用save方法新增数据: lar ...

  9. laravel ::all() 选择字段_Laravel 性能优化:优化 ORM 性能使应用程序高可用

    原文链接:https://learnku.com/laravel/t/44270 讨论请前往专业的 Laravel 开发者论坛:https://learnku.com/Laravel 大家好,我是Va ...

  10. laravel组件单独加载(2):模型 Eloquent ORM

    模型组件的加入 目前的项目代码是基于上一个文章的,不知道的可以看上一个文章laravel组件单独加载(1):路由 修改composer.json文件加入模型组件 {"require" ...

最新文章

  1. 基于VS+Qt Gui显示控制台用于调试
  2. LeetCode-135-Candy
  3. iSCSI的基础实验
  4. 线性布局 相对布局 参数
  5. 如何获得阿里技术offer:从《阿里DBA面试题》体味阿里社会招聘
  6. Codechef_JULY14
  7. Windows进程与线程学习笔记(四)—— 等待链表调度链表
  8. html的input的id,请求[“inputId”]不能在cshtml上工作
  9. Django中重定向页面的时候使用命名空间
  10. OpenCV:实现灰度直方图和单通道直方图拉伸
  11. JS判断Iframe是否加载完成
  12. Python 彻底甩掉 Java,位居 48 种编程语言之首!
  13. 6.RabbitMQ实战 --- 从故障中恢复
  14. 自留-Python:线性拟合(直线+曲线)
  15. springcloud篇面试宝典
  16. 2020PayPal提现有哪些渠道?听说注册义乌个体户也可以!
  17. 一文带你学会linux系统 史上最全linux命令大全
  18. 磊科nw362 linux驱动下载,磊科nw362无线网卡驱动
  19. Android LeakCanary使用详细教程
  20. 手把手安排 --- JavaH5微信支付(移动端浏览器H5拉起微信支付)

热门文章

  1. GoLang - Go中Mocking(1)
  2. mongo数据库的使用
  3. java实现极简单的 TXT小说阅读器(第四版)
  4. r语言中大小写c的区别吗,R语言和C语言哪个难?
  5. 短视频 SDK 架构设计实践
  6. ICPCCamp 2016 Day 6 - Spb SU and Spb AU Contest(Colored path-dp)
  7. CRM管理软件有哪些?这5款好用的CRM软件值得推荐!
  8. Java具有哪些语言特点
  9. android 六边形简书,水波浪贝塞尔效果(六边形)
  10. 中国特殊灯具行业市场供需与战略研究报告