Model::get() повертає Illuminate\Database\Eloquent\Collection - вона успадковує звичайну колекцію й додає методи для моделей.
$users = User::where('active', true)->get();
$users->find(7); // модель за первинним ключем, без запиту
$users->modelKeys(); // [1, 7, 12]
$users->load('posts'); // жадібно завантажити зв'язок для всіх
$users->loadCount('orders');
$users->contains($someUser); // порівнює моделі за ключем
$users->fresh(); // перечитати з бази
$users->toQuery()->update([...]); // один запит за ключами колекції
$users->except([1, 7]); // без моделей з цими ключами
Що важливо розуміти:
- методи колекції працюють у пам'яті.
$users->where('role', 'admin')фільтрує вже завантажене, аUser::where('role', 'admin')- робить запит. Перше доречне для невеликої вибірки, друге - коли рядків багато; - деякі методи (
map,pluck) повертають звичайну колекцію, якщо результат уже не моделі; load()на колекції - спосіб прибрати N+1, коли моделі отримали безwith().
Для власних методів ($orders->totalPaid()) моделі можна дати свою колекцію атрибутом #[CollectedBy].