first()) { return; } $field_name = $items->getFieldDefinition()->getName(); /** @var \Drupal\Core\Entity\EntityInterface $entity */ $entity = $items->getEntity(); $entity_type_id = $entity->getEntityTypeId(); $id_key = $entity->getEntityType()->getKey('id'); $value_taken = (bool) \Drupal::entityQuery($entity_type_id) // The id could be NULL, so we cast it to 0 in that case. ->condition($id_key, (int) $items->getEntity()->id(), '<>') ->condition($field_name, $item->value) ->range(0, 1) ->count() ->execute(); if ($value_taken) { $this->context->addViolation($constraint->message, [ '%value' => $item->value, '@entity_type' => $entity->getEntityType()->getLowercaseLabel(), '@field_name' => mb_strtolower($items->getFieldDefinition()->getLabel()), ]); } } }