CriteriaFilter zum Prüfen auf Existenz eines CustomFields

Guten morgen,

ich benötige für ein Script die Umsetzung folgender Bedingung in Form eines Filters für ein Criterium, bin mir jetzt aber zumindest in einem Punkt nicht sicher, ob ich dem Thema gerecht werde.

es geht um folgendes …

- a) das Criterium xy ist nicht vorhanden

- b) ist das Criterium vorhanden, dann mit der unterwerfe es der Bedinung „efg“

 

Das Drumherum ist klar (Multifilter, OR) und auch (b) kein Problem. Nur mit Teil (a) weiß ich nicht so recht.

Ein Vorgehen in der Art

new NotFilter( NotFilter::CONNECTION_AND, new EqualsFilter('customfield.xy', null)) 

ist es nicht. Der Generierte SQL Code  sagt mir, dass die Existenz dieses Attributes ja immer noch Bedienung ist :

 NOT (
          IF(
            JSON_TYPE(
              JSON_EXTRACT(
                `order`.`custom_fields`, '$.xy'
              )
            ) != "NULL",
            CONVERT(
              JSON_UNQUOTE(
                JSON_EXTRACT(
                  `order`.`custom_fields`, '$.xy'
                )
              ) USING "utf8mb4"
            ) COLLATE utf8mb4_unicode_ci,
            NULL
          ) IS NULL
        )

Aktuell bin ich auf den Einsatz eines Containsfilter umgeschwenkt und frage …

new ContainsFilter('customFields', '"xy"').

Es funktioniert. Was mich hier nur stört ist, dass ich die Abstraktionsebene hinter dem Ganzen verlasse und mehr oder weniger schon  die konkrete Implementierung dahinter angehe (Ablage der Attribute als JSON in der DB).

Liege ich dennoch richtig oder was wäre den der richtige Weg ?

Danke und Grüße