filter() vs reject() - очищення даних
Потрібно прибрати частину елементів? Писати складні if не обов'язково.
filter() залишає елементи, що відповідають умові.
reject() прибирає елементи, що відповідають умові.
Різниця:
- filter() - залишає truthy
- reject() - прибирає truthy
- Обидва повертають нову колекцію
Розширено:
Для простих порівнянь краще where(), whereIn(), whereBetween().
Порада: filter() без callback прибирає всі falsy (null, false, 0, '', []).
// filter() - тільки активні
$active = $users->filter(fn($u) => $u->active === true);
// reject() - видалити неактивних
$active = $users->reject(fn($u) => $u->active === false);
// filter() без callback
$values = collect([1, 2, null, 3, false, '', 4]);
$cleaned = $values->filter();
// [1, 2, 3, 4]
// where()
$admins = $users->where('role', 'admin');
$verified = $users->where('email_verified_at', '!=', null);
// whereIn()
$staff = $users->whereIn('role', ['admin', 'moderator']);
// whereBetween()
$recent = $posts->whereBetween('created_at', [
now()->subDays(7),
now()
]);
// Комбінування фільтрів
$result = $users
->where('active', true)
->whereIn('role', ['admin', 'editor'])
->filter(fn($u) => $u->posts_count > 10);