У меня большой массив имен и фамилий, мне нужно знать какие из них отличаются от текущих в базе.
Например:
    $большой список = большой список ();
    $storage = $this->entityTypeManager->getStorage("mi_entity");
    $запрос = $хранилище->getQuery();
    foreach ($largeList как $item) {
      $andGroup = $query->andConditionGroup();
      $andGroup
        ->условие('имя', $item->getName(), "<>")
        ->условие('фамилия', $item->getSurname(), "<>");
      $запрос->условие($andGroup);
    }
    $ids = $запрос->выполнить();
Идея состоит в том, чтобы сравнить имя и фамилию, например, часть условия sql должна выглядеть примерно так:
ВЫБРАТЬ
   "base_table"."id" КАК "id",
   "base_table"."id" КАК "base_table_id" 
ОТ
   "entity_table" "базовая_таблица" 
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      "entity_table" "entity_table" 
      ON "entity_table"."id" = "base_table"."id"
КУДА
 (("entity_table"."name" NOT LIKE 'NAME 1' ESCAPE '\') and ("entity_table"."surname" NOT LIKE 'LAST NAME 1' ESCAPE '\')) И 
 (("entity_table"."name" NOT LIKE 'NAME 2' ESCAPE '\') and ("entity_table"."surname" NOT LIKE 'LAST NAME 2' ESCAPE '\')) И ..... .
Однако приведенный выше код в качестве примера создает дополнительное объединение для каждого элемента массива, например:
ВЫБРАТЬ
   "base_table"."id" КАК "id",
   "base_table"."id" КАК "base_table_id" 
ОТ
   "entity_table" "базовая_таблица" 
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      "entity_table" "entity_table" 
      ON "entity_table"."id" = "base_table"."id" 
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      "entity_table" "entity_table_2" 
      ON "entity_table_2"."id" = "base_table"."id" 
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      "entity_table" "entity_table_3" 
      ON "entity_table_3"."id" = "base_table"."id" 
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
      "entity_table" "entity_table_4" 
      ON "entity_table_4"."id" = "base_table"."id" 
      КУДА
   (("entity_table"."name" NOT LIKE 'NAME 1' ESCAPE '\') and ("entity_table"."surname" NOT LIKE 'LAST NAME 1' ESCAPE '\')) И 
   (("entity_table_2"."имя" НЕ НРАВИТСЯ 'NAME 2' ESCAPE '\') и ("entity_table_2"."surname" НЕ НРАВИТСЯ 'LAST NAME 2' ESCAPE '\')) И 
   (("entity_table_3"."имя" НЕ НРАВИТСЯ 'NAME 3' ESCAPE '\') и ("entity_table_3"."surname" НЕ НРАВИТСЯ 'LAST NAME 3' ESCAPE '\')) И 
   (("entity_table_4"."name" NOT LIKE 'NAME 4' ESCAPE '\') и ("entity_table_4"."surname" NOT LIKE 'LAST NAME 4' ESCAPE '\'))
В этом отрывке из запроса я показываю только 4 условия, которые генерируют 4 соединения, но если у меня есть 500, оно генерирует 500 соединений.
Как правильно написать условие, чтобы избежать этих ненужных объединений?