# EntityRepository search Json Field

**URL:** <https://forum.shopware.com/t/entityrepository-search-json-field/98328>\
**Category:** Programmierung\
**Created:** [2. Februar 2023 um 15:30 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328 "2023-02-02T15:30:29Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![goldbachmedien](https://avatars.discourse-cdn.com/v4/letter/g/ba9def/32.png) [@goldbachmedien](https://forum.shopware.com/u/goldbachmedien)\
**Post date:** [2. Februar 2023 um 15:30 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328/1 "2023-02-02T15:30:29Z")

</div>

Moin zusammen,

ich versuche in einem EntityRepository eine Entity anhand eines JSON Datenbankfeldes zu finden:

```php
$superEntity = $this->superRepository->searchIds((new Criteria())->addFilter(new AndFilter([
            new EqualsFilter('measurements', json_encode($super['measurements'])),
        ])), $context->getContext())->firstId();

```

Ich habe bisher nur nach Entities gesucht wo ein String drin stehen sollte. Wie kann ich prüfen, ob in dem JSON-Feld in der Datenbank ein bestimmter Key/Value steht?

In der entsprechenden JSON-Spalte in der Datenbank steht sowas wie:

```json
{"width": 500, "length": 500, "diameter": 500, "innerDiameter": 50, "outerDiameter": 500}

```

Das oben versuchte json\_encode() macht vermutlich nicht die gleichen Spaces, weshalb der String nicht identisch ist, aber das wäre sowieso nur die halbe Lösung.

Eigentlich möchte ich mir eine beispielsweise eine Entity suchen, die innerhalb des JSON-Feldes z.B: „width“ == 500 hat.

Hat jemand eine Idee?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [2. Februar 2023 um 17:00 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328/2 "2023-02-02T17:00:36Z")

</div>

> **[Fetching data from](https://developer.shopware.com/docs/guides/plugins/plugins/framework/custom-field/fetching-data-from-entity-selection)**

wird aber vermutlich eher nicht das sein, was du suchst.

Dann ggf. eine eigene Query erstellen mit JSON\_CONTAINS. Oder das ganze JSON als String behandeln und einfach nach „x: y“ suchen, falls das möglich ist – noch nie versucht.

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [2. Februar 2023 um 17:20 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328/3 "2023-02-02T17:20:25Z")

</div>

Hast du es mit folgendem versucht?

```auto
new EqualsFilter('measurements.width', 500))

```

Eventuell auch mit `"500"`?

---

<div class="post-metadata">

**Author:** ![goldbachmedien](https://avatars.discourse-cdn.com/v4/letter/g/ba9def/32.png) [@goldbachmedien](https://forum.shopware.com/u/goldbachmedien)\
**Post date:** [3. Februar 2023 um 10:59 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328/4 "2023-02-03T10:59:48Z")

</div>

Genau das habe ich gesucht, vielen Dank!

Ich hab versucht mich hierzu ein wenig durch den Core zu lesen - woher wusstest du, dass das so funktioniert? Hast du einen Tipp, wie ich das nachvollziehen kann?

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [3. Februar 2023 um 11:26 UTC](https://forum.shopware.com/t/entityrepository-search-json-field/98328/5 "2023-02-03T11:26:12Z")

</div>

Ich schon etwas länger her, da habe ich auch nach customFields gefiltert und hatte daher in Erinnerung, das dies klappen müsste.

Aber Performance gesehen, ist es nicht zu empfehlen nach einem JSON Feld zu filtern. Dann lieber die Daten in einer eigenen Entity/Spalte speichern.
