Если вам надо отфильтровать коллекцию Laravel и получить только те записи, которые соответствуют заданным критериям, то скорее всего вы воспользуетесь методами PHPfilter()
или PHPreject()
. Вот как это работает:
$vips = $people->filter(function ($person) {
return $person->status === 'vip';
});
$nonVips = $people->reject(function ($person) {
return $person->status === 'vip';
});
Возможно вы не знали, но существует ещё один метод PHPwhere()
, он очень прост и выполняет ту же задачу:
$vips = $people->where('status', 'vip');
До версии 5.3 проверялось строгое равенство (PHP===
), как в первом примере.
Начиная с версии 5.3 эта строка означает нестрогую (loose) проверку (PHP==
), но вы можете указать требуемый оператор сравнения. Например, так:
$nonVips = $people->where('status', '!==', 'vip');
$popularPosts = $posts->where('views', '>', 500);
$firstTimeUsers = $people->where('logins', '===', 1);
Все доступные на момент написания статьи операторы сравнения вы можете найти здесь: Collection#l214-260.