В чем разница между этими методами
Я использовал их, и каждый из них дает другой результат, и иногда мне нужно добавить toArray()
в конец get()
потому что моя функция ожидает массив. Не будут ли другие методы создавать массивы?
find($id)
принимает идентификатор и возвращает одну модель. Если подходящая модель не существует, она возвращает null
.
findOrFail($id)
принимает идентификатор и возвращает одну модель. Если подходящая модель не существует, она выдает ошибку.
first()
возвращает первую запись, найденную в базе данных. Если подходящая модель не существует, она возвращает null
.
firstOrFail()
возвращает первую запись, найденную в базе данных. Если подходящая модель не существует, она выдает ошибку.
get()
возвращает коллекцию моделей, соответствующих запросу.
pluck($column)
возвращает коллекцию только значений в данном столбце. В предыдущих версиях Laravel этот метод назывался lists
.
toArray()
преобразует модель / коллекцию в простой массив PHP.
Примечание. Коллекция представляет собой усиленный массив. Он функционирует аналогично массиву, но имеет много дополнительных функций, как вы можете видеть в документах .
К сожалению, PHP не позволяет использовать объект коллекции везде, где вы можете использовать массив. Например, использование коллекции в цикле foreach
в порядке, поместить ее в array_map
нет. Точно так же, если вы набираете тип hint как array
, PHP не позволит вам передать ему коллекцию. Более новые версии PHP имеют iterable
тип, который можно использовать для приема как массивов, так и коллекций.
Если вы хотите получить простой массив из коллекции, вызовите его метод all()
.