这些方法之间有什么区别:
find()
findOrFail()
first()
firstOrFail()
get()
list()
toArray()
我一直在使用它们,但是每个函数都给出不同的结果,有时我需要toArray()在末尾添加,get()因为我的函数期望使用数组。其他方法也不会产生数组吗?
find($id) 接受一个ID并返回一个模型。如果不存在匹配的模型,则返回null。
find($id)
null
findOrFail($id) 接受一个ID并返回一个模型。如果不存在匹配的模型,则会引发错误1。
findOrFail($id)
first() 返回在数据库中找到的第一条记录。如果不存在匹配的模型,则返回null。
firstOrFail() 返回在数据库中找到的第一条记录。如果不存在匹配的模型,则会引发错误1。
get() 返回与查询匹配的模型的集合。
pluck($column) 返回仅给定列中的值的集合。在以前的Laravel版本中,此方法称为lists。
pluck($column)
lists
toArray() 将模型/集合转换为简单的PHP数组。
注意: 集合是一个增强的数组。它的功能类似于数组,但具有许多附加功能,如docs中所示。
不幸的是,PHP不允许您在可以使用数组的任何地方使用集合对象。例如,在foreach循环中使用集合是可以的,但将其传递给它array_map是不可行的。同样,如果您将参数类型提示为array,PHP将不允许您将其传递给集合。从PHP 7.1开始,有iterabletypehint,它可以用来接受数组和集合。
foreach
array_map
array
iterable
如果要从集合中获取纯数组,请调用其all()方法。
all()
1findOrFail和firstOrFail方法引发的错误是ModelNotFoundException。如果您自己没有捕获到此异常,Laravel将以404响应,这是您大多数时候想要的。
findOrFail
firstOrFail
ModelNotFoundException