在 laravel 的模型中 get 和 first 的区别
- 一开始我以为
get
和first
在获取单条数据上是没有区别的, 于是我在修改某条数据的时候就使用了get
, 结果导致了在保存修改的时候, 报了找不到save()
方法的问题 - 结果才发现
get
和first
在获取单条数据上也是不一样的, 如下: get
获取数据的情况:[ { "id": 1, "title": "测试修改", "content": "两百有点少吧, 我估计是五百", "img_url": "QgwnVQsTgOUeDMUNUscIi2jnaTHBWn49xvLZWhr3", "type": "1", "music_url": null, "created_at": "2021-01-07 23:13:45", "updated_at": "2021-01-07 23:27:09" } ]
- 哪怕是一条数据, 这个时候也是一个数组, 因此就不能拿获取到的数据直接做属性修改后保存, 需要先从数组中取出
first
获取数据的情况如下:{ "id": 1, "title": "测试修改", "content": "两百有点少吧, 我估计是五百, 不还早着嘛, 快到的时候问问陈天赐", "img_url": "QgwnVQsTgOUeDMUNUscIi2jnaTHBWn49xvLZWhr3", "type": "1", "music_url": null, "created_at": "2021-01-07 23:13:45", "updated_at": "2021-01-07 23:27:09" }
- 此时是可以直接修改属性并报错的
- 模型中想要获取指定字段的话, 可以使用如下格式 (
get
和first
方式一样):$this->postModel->where('id', '=', $id)->get(['id', 'title', 'content'])
- 知识很简单, 只是记录下成长的过程
本作品采用《CC 协议》,转载必须注明作者和本文链接
get()->first() 比直接first()不经过get要好一点点吧, 好在判断是否为空要方便点!
get
是fetch
一个集合. 获取去,拿到第一条数据,需要指定下标.first
是 直接帮get
指定拿到了 第一条@xini2603 一样的,
first()
返回null
不一样可以判断吗,可以看下源码