在 laravel 的模型中 get 和 first 的区别

  • 一开始我以为 getfirst 在获取单条数据上是没有区别的, 于是我在修改某条数据的时候就使用了 get, 结果导致了在保存修改的时候, 报了找不到 save() 方法的问题
  • 结果才发现 getfirst 在获取单条数据上也是不一样的, 如下:
  • 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"
    }
    • 此时是可以直接修改属性并报错的

  • 模型中想要获取指定字段的话, 可以使用如下格式 (getfirst 方式一样):
    $this->postModel->where('id', '=', $id)->get(['id', 'title', 'content'])

  • 知识很简单, 只是记录下成长的过程 :paw_prints:
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 3

get()->first() 比直接first()不经过get要好一点点吧, 好在判断是否为空要方便点!

4年前 评论
qingshui (楼主) 4年前
wangchunbo

getfetch一个集合. 获取去,拿到第一条数据,需要指定下标. first 是 直接帮get 指定拿到了 第一条

4年前 评论
qingshui (楼主) 4年前

@xini2603 一样的,first() 返回 null 不一样可以判断吗,可以看下源码

/**
 * Execute the query and get the first result.
 *
 * @param  array|string  $columns
 * @return \Illuminate\Database\Eloquent\Model|object|static|null
 */
public function first($columns = ['*'])
{
    return $this->take(1)->get($columns)->first();
}
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!