Score:0

การรวมที่ไม่จำเป็นหลายรายการเมื่อสร้าง andConditionGroup()

ธง de

ฉันมีชื่อและนามสกุลมากมาย ฉันจำเป็นต้องรู้ว่าชื่อและนามสกุลใดแตกต่างจากชื่อปัจจุบันในฐานข้อมูล

ตัวอย่างเช่น:

    $largeList = รายการใหญ่();
    $storage = $this->entityTypeManager->getStorage("mi_entity");
    $query = $storage->getQuery();

    foreach ($largeList เป็น $item) {
      $andGroup = $query->andConditionGroup();
      $และกลุ่ม
        ->condition('name', $item->getName(), "<>")
        ->condition('นามสกุล', $item->getSurname(), "<>");
      $query->condition($andGroup);
    }

    $ids = $query->execute();

แนวคิดคือการเปรียบเทียบชื่อและนามสกุล เช่น ส่วนของเงื่อนไข sql ควรมีลักษณะดังนี้:

เลือก
   "base_table"."id" เป็น "id",
   "base_table"."id" เป็น "base_table_id" 
จาก
   "entity_table" "ฐาน_ตาราง" 
   เข้าร่วมภายใน
      "entity_table" "เอนทิตี_ตาราง" 
      เปิด "entity_table"."id" = "base_table"."id"
ที่ไหน
 (("entity_table"."name" ไม่เหมือน 'ชื่อ 1' หลบหนี '\') และ ("entity_table"."นามสกุล" ไม่เหมือน 'นามสกุล 1' หลบหนี '\')) และ 
 (("entity_table"."name" ไม่เหมือน 'ชื่อ 2' หลบหนี '\') และ ("entity_table"."นามสกุล" ไม่เหมือน 'นามสกุล 2' หลบหนี '\')) และ ..... .

อย่างไรก็ตาม โค้ดข้างต้นเป็นตัวอย่าง สร้างการรวมเพิ่มเติมสำหรับแต่ละรายการในอาร์เรย์ดังนี้:

เลือก
   "base_table"."id" เป็น "id",
   "base_table"."id" เป็น "base_table_id" 
จาก
   "entity_table" "ฐาน_ตาราง" 
   เข้าร่วมภายใน
      "entity_table" "เอนทิตี_ตาราง" 
      เปิด "entity_table"."id" = "base_table"."id" 
   เข้าร่วมภายใน
      "entity_table" "entity_table_2" 
      เปิด "entity_table_2"."id" = "base_table"."id" 
   เข้าร่วมภายใน
      "entity_table" "entity_table_3" 
      เปิด "entity_table_3"."id" = "base_table"."id" 
   เข้าร่วมภายใน
      "entity_table" "entity_table_4" 
      เปิด "entity_table_4"."id" = "base_table"."id" 

      ที่ไหน
   (("entity_table"."name" ไม่เหมือน 'ชื่อ 1' หลบหนี '\') และ ("entity_table"."นามสกุล" ไม่เหมือน 'นามสกุล 1' หลบหนี '\')) และ 
   (("entity_table_2"."name" ไม่เหมือน 'ชื่อ 2' หลบหนี '\') และ ("entity_table_2"."นามสกุล" ไม่เหมือน 'ชื่อสุดท้าย 2' หลบหนี '\')) และ 
   (("entity_table_3"."name" ไม่เหมือน 'NAME 3' ESCAPE '\') และ ("entity_table_3"."surname" ไม่เหมือน 'LAST NAME 3' ESCAPE '\')) และ 
   (("entity_table_4"."name" NOT LIKE 'NAME 4' ESCAPE '\') and ("entity_table_4"."surname" NOT LIKE 'LAST NAME 4' ESCAPE '\'))

ในข้อความที่ตัดตอนมาจากข้อความค้นหานี้ ฉันแสดงเพียง 4 เงื่อนไขที่สร้างการรวม 4 รายการ แต่ถ้าฉันมี 500 รายการ ก็จะสร้างการรวม 500 รายการ วิธีที่ถูกต้องในการเขียนเงื่อนไขเพื่อหลีกเลี่ยงการรวมที่ไม่จำเป็นเหล่านี้คืออะไร

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา