Puncte:0

Uniri multiple inutile la crearea unui andConditionGroup()

drapel de

Am o gamă largă de nume și prenume, trebuie să știu care dintre acestea diferă de cele actuale din baza de date.

De exemplu:

    $largeList = largeList();
    $storage = $this->entityTypeManager->getStorage("mi_entity");
    $interogare = $storage->getQuery();

    foreach ($largeList ca $articol) {
      $andGroup = $interogare->andConditionGroup();
      $andGroup
        ->condition('nume', $item->getName(), "<>")
        ->condition('nume', $item->getSurname(), "<>");
      $interogare->conditie($andGroup);
    }

    $ids = $query->execute();

Ideea este de a compara numele și prenumele, de exemplu partea din condiția sql ar trebui să arate ceva similar cu asta:

SELECTAȚI
   "base_table"."id" AS "id",
   "base_table"."id" AS "base_table_id" 
DIN
   „entity_table” „base_table” 
   INNER JOIN
      „entity_table” „entity_table” 
      ON "entity_table"."id" = "base_table"."id"
UNDE
 (("entity_table"."nume" NU CA LIKE 'NAME 1' ESCAPE '\') și ("entity_table"."nume" NU CA 'LAST NUME 1' ESCAPE '\')) ȘI 
 (("entity_table"."nume" NU CA LIKE 'NAME 2' ESCAPE '\') și ("entity_table"."nume" NU LIKE 'LAST NAME 2' ESCAPE '\')) ȘI ..... .

Cu toate acestea, codul de mai sus, ca exemplu, generează o îmbinare suplimentară pentru fiecare element din matrice, astfel:

SELECTAȚI
   "base_table"."id" AS "id",
   "base_table"."id" AS "base_table_id" 
DIN
   „entity_table” „base_table” 
   INNER JOIN
      „entity_table” „entity_table” 
      ON "entity_table"."id" = "base_table"."id" 
   INNER JOIN
      „entity_table” „entity_table_2” 
      ON "entity_table_2"."id" = "base_table"."id" 
   INNER JOIN
      „entity_table” „entity_table_3” 
      ON "entity_table_3"."id" = "base_table"."id" 
   INNER JOIN
      „entity_table” „entity_table_4” 
      ON "entity_table_4"."id" = "base_table"."id" 

      UNDE
   (("entity_table"."nume" NU CA LIKE 'NAME 1' ESCAPE '\') și ("entity_table"."nume" NU CA 'LAST NUME 1' ESCAPE '\')) ȘI 
   (("entity_table_2"."nume" NU CA LIKE 'NAME 2' ESCAPE '\') și ("entity_table_2"."nume" NU LIKE 'LAST NAME 2' ESCAPE '\')) ȘI 
   (("entity_table_3"."nume" NU CA LIKE 'NAME 3' ESCAPE '\') și ("entity_table_3"."nume" NU LIKE 'LAST NAME 3' ESCAPE '\')) ȘI 
   (("entity_table_4"."nume" NU CA LIKE 'NAME 4' ESCAPE '\') și ("entity_table_4"."nume" NU LIKE 'LAST NAME 4' ESCAPE '\'))

În acest fragment din interogare, arăt doar 4 condiții care generează 4 join, dar dacă am 500, generează 500 join. Care ar fi modul corect de a scrie condiția pentru a evita aceste îmbinări inutile?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.