find(),findOrFail(),first(),firstOrFail(),get(),list(),toArray()

时间:2015-10-08 22:34:25

标签: php laravel laravel-5

这些方法有什么区别:

  1. find()
  2. findOrFail()
  3. first()
  4. firstOrFail()
  5. get()
  6. list()
  7. toArray()
  8. 我一直在使用它们,每个人都会给出不同的结果,有时我需要在toArray()的末尾添加get()因为我的函数需要一个数组。不知道其他方法产生数组吗?

2 个答案:

答案 0 :(得分:127)

  1. find($id) 获取ID并返回单个模型。如果不存在匹配的模型,则返回null

  2. findOrFail($id) 获取ID并返回单个模型。如果不存在匹配模型,则会抛出错误 1

  3. first() 会返回在数据库中找到的第一条记录。如果不存在匹配的模型,则返回null

  4. firstOrFail() 会返回在数据库中找到的第一条记录。如果不存在匹配模型,则会抛出错误 1

  5. get() 会返回与查询匹配的模型集合。

  6. pluck($column) 只返回给定列中的值的集合。在以前版本的Laravel中,此方法称为lists

  7. toArray() 将模型/集合转换为简单的PHP数组。

  8. 注意: a collection是一个增强的阵列。它的功能与数组类似,但具有许多附加功能,如the docs中所示。

    不幸的是,PHP并不允许您在任何可以使用数组的地方使用集合对象。例如,在foreach循环中使用集合是可以的,将其传递给array_map则不行。同样,如果你键入一个参数为array,PHP就不会让你传递一个集合。较新版本的PHP具有iterable类型提示,可用于接受数组和集合。

    如果您想从集合中获取普通数组,请调用其all()方法。

    1 findOrFailfirstOrFail方法引发的错误是ModelNotFoundException。如果你自己没有抓住这个例外,Laravel will respond with a 404,这是你大部分时间都想要的。

答案 1 :(得分:1)

@Joseph Silber提供的所有信息都是正确的,而且非常有用。

我想为list()添加一个答案

从Laravel 5.2开始,Collection,查询构建器和Eloquent查询构建器对象上的list方法已重命名为pluck。方法签名保持不变。

相关问题