一尘不染

find(),findOrFail(),first(),firstOrFail(),get(),list(),toArray()之间有什么区别

php

这些方法之间有什么区别:

  1. find()
  2. findOrFail()
  3. first()
  4. firstOrFail()
  5. get()
  6. list()
  7. toArray()

我一直在使用它们,但是每个函数都给出不同的结果,有时我需要toArray()在末尾添加,get()因为我的函数期望使用数组。其他方法也不会产生数组吗?


阅读 261

收藏
2020-05-29

共1个答案

一尘不染

  1. find($id) 接受一个I​​D并返回一个模型。如果不存在匹配的模型,则返回null

  2. findOrFail($id) 接受一个I​​D并返回一个模型。如果不存在匹配的模型,则会引发错误1。

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

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

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

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

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


注意: 集合是一个增强的数组。它的功能类似于数组,但具有许多附加功能,如docs中所示

不幸的是,PHP不允许您在可以使用数组的任何地方使用集合对象。例如,在foreach循环中使用集合是可以的,但将其传递给它array_map是不可行的。同样,如果您将参数类型提示为array,PHP将不允许您将其传递给集合。从PHP
7.1开始,有iterabletypehint,它可以用来接受数组和集合。

如果要从集合中获取纯数组,请调用其all()方法。


1findOrFailfirstOrFail方法引发的错误是ModelNotFoundException。如果您自己没有捕获到此异常,Laravel将以404响应,这是您大多数时候想要的。

2020-05-29