Коли вам потрібна точна відповідність типів під час фільтрації колекцій, метод 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 дозволяє зберегти цілісність даних під час фільтрації, поважаючи повну ідентичність ваших значень та запобігаючи ненавмисному збігу при роботі з різними типами даних або введенням користувачів.
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!