# Criteria "NOT IN" Filter

**URL:** <https://forum.shopware.com/t/criteria-not-in-filter/60647>\
**Category:** Programmierung\
**Created:** [24. Juli 2019 um 17:38 UTC](https://forum.shopware.com/t/criteria-not-in-filter/60647 "2019-07-24T17:38:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pino](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/pino/32/14373_2.png) [@pino](https://forum.shopware.com/u/pino)\
**Post date:** [24. Juli 2019 um 17:38 UTC](https://forum.shopware.com/t/criteria-not-in-filter/60647/1 "2019-07-24T17:38:15Z")

</div>

Tach zusammen,

hab mal wieder eine Frage und hoffe das ich mal erhört werde.  
Ich suche in der DB nach Produkte die nicht bestimmten IDs&nbsp;entsprechen (NOT IN (…)).

Hier mal das Query dazu:&nbsp;

```
SELECT *, HEX(`id`) AS `id`, HEX(`version_id`) AS `version_id`, HEX(`parent_id`) AS `parent_id`, HEX(`parent_version_id`) AS `parent_version_id`, HEX(`tax_id`) AS `tax_id`, HEX(`product_manufacturer_id`) AS `product_manufacturer_id`, HEX(`product_manufacturer_version_id`) AS `product_manufacturer_version_id`, HEX(`delivery_time_id`) AS `delivery_time_id`, HEX(`deliveryTime`) AS `deliveryTime`, HEX(`product_media_id`) AS `product_media_id`, HEX(`product_media_version_id`) AS `product_media_version_id`, HEX(`unit_id`) AS `unit_id`, HEX(`tax`) AS `tax`, HEX(`manufacturer`) AS `manufacturer`, HEX(`cover`) AS `cover`, HEX(`unit`) AS `unit`, HEX(`media`) AS `media`, HEX(`prices`) AS `prices`, HEX(`visibilities`) AS `visibilities`, HEX(`properties`) AS `properties`, HEX(`categories`) AS `categories`, HEX(`translations`) AS `translations`, HEX(`tags`) AS `tags`, HEX(`searchKeywords`) AS `searchKeywords` FROM `product` WHERE HEX(`id`) NOT IN ("00F92ADD7C1F49AD95C2F3672C4606F0", "040C81773F884F44AE5165B20B3DB6AB") LIMIT 4

```

Ist es möglich ein Criteria dazu zu erstellen z.B.

```
$criteria = new Criteria();
$criteria->addFilter(new NotInFilter('product.id', ["00F92ADD7C1F49AD95C2F3672C4606F0", "040C81773F884F44AE5165B20B3DB6AB"]));
$criteria->setLimit(4);

$result = $productRepository->search($criteria, $context);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)\
**Post date:** [24. Juli 2019 um 17:44 UTC](https://forum.shopware.com/t/criteria-not-in-filter/60647/2 "2019-07-24T17:44:58Z")

</div>

$criteria-\>addFilter(new NotFilter( NotFilter::CONNECTION\_AND, new EqualsAnyFilter(‘product.id’, [‘id1’, ‘id2’])));

Sollte so gehen

---

<div class="post-metadata">

**Author:** ![pino](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/pino/32/14373_2.png) [@pino](https://forum.shopware.com/u/pino)\
**Post date:** [25. Juli 2019 um 08:33 UTC](https://forum.shopware.com/t/criteria-not-in-filter/60647/3 "2019-07-25T08:33:38Z")

</div>

@Shyim‍

danke, das pass wunderbar.  
NotFilter() erwartet ein array im 2ten Parameter. daher sieht der Filter dann so aus.

```
$products = ['00F92ADD7C1F49AD95C2F3672C4606F0', '040C81773F884F44AE5165B20B3DB6AB'];

if(count($products)){
	$criteria->addFilter(new NotFilter(
		NotFilter::CONNECTION_AND,
		[new EqualsAnyFilter('product.id', $products)]
	));
}
$criteria->setLimit(4)
	->setOffset(0)
	->addSorting(new FieldSorting('product.id', FieldSorting::ASCENDING));

$result = $repository->search($criteria, $context);

```

&nbsp;
