Точне фільтрування колекцій із використанням whereNotInStrict у Laravel

Перекладено ШІ 0 Laravel News 26 березня, 2025

Вам коли-небудь доводилось стикатися з проблемами точного співпадіння типів під час фільтрації колекцій у Laravel? У нашій статті ми розглянемо, як метод whereNotInStrict допомагає точно виключати значення, забезпечуючи цілісність даних та уникаючи небажаних збігів. Читайте далі, щоб дізнатися більше

Коли вам потрібна точна відповідність типів під час фільтрації колекцій, метод Laravel whereNotInStrict забезпечує точні результати, адже він гарантує, що повинні відповідати як значення, так і типи під час виключення.

$collection = collect([
    ['id' => 1, 'value' => '100'],
    ['id' => 2, 'value' => 100],
    ['id' => 3, 'value' => '200'],
    ['id' => 4, 'value' => 200]
]);
 
$loose = $collection->whereNotIn('value', [100]);
// Результат: Тільки елементи зі значеннями '200' та 200
 
$strict = $collection->whereNotInStrict('value', [100]);
// Результат: Елементи зі значеннями '100', '200' та 200
// (зберігає стрічкове '100', оскільки 100 !== '100')

Ця відмінність особливо важлива у системах, де типи даних мають значущі відмінності, наприклад, при роботі з ідентифікаторами або числовими значеннями з різних джерел.

class ProductFilter
{
    public function filterByExactStock($products, array $excludedStockLevels)
    {
        return $products->whereNotInStrict('stock_level', $excludedStockLevels);
    }
 
    public function filterByPreciseStatus($products, array $statuses)
    {
        return $products
            ->whereNotInStrict('status', $statuses)
            ->values();
    }
 
    public function applyFilters($products)
    {
        return $products
            // Виключити конкретні числові коди (врахування типу)
            ->whereNotInStrict('product_code', ['001', '002'])
            // Виключити конкретні статуси (врахування типу)
            ->whereNotInStrict('status', ['active', 'pending'])
            // Переномінувати масив
            ->values();
    }
}
 
$products = collect([
    ['product_code' => '001', 'status' => 'active'],
    ['product_code' => 1, 'status' => 'active'],    // Інший тип
    ['product_code' => '002', 'status' => 'pending'],
    ['product_code' => 2, 'status' => 'inactive']
]);
 
$filter = new ProductFilter();
$filtered = $filter->applyFilters($products);

Використання whereNotInStrict дозволяє зберегти цілісність даних під час фільтрації, поважаючи повну ідентичність ваших значень та запобігаючи ненавмисному збігу при роботі з різними типами даних або введенням користувачів.

Популярні

Інше, що варто прочитати

173 Оновлено 01 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

15 Оновлено 01 червня, 2026

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!

17 Оновлено 01 червня, 2026

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!