Điểm:0

Nhiều phép nối không cần thiết khi tạo andConditionGroup()

lá cờ de

Tôi có một mảng lớn tên và họ, tôi cần biết cái nào trong số chúng khác với cái hiện tại trong cơ sở dữ liệu.

Ví dụ:

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

    foreach ($largeList as $item) {
      $andGroup = $query->andConditionGroup();
      $andGroup
        ->điều kiện('tên', $item->getName(), "<>")
        ->điều kiện('họ', $item->getHọ(), "<>");
      $query->condition($andGroup);
    }

    $ids = $query->execute();

Ý tưởng là để so sánh tên và họ, ví dụ: một phần của điều kiện sql sẽ trông giống như sau:

LỰA CHỌN
   "base_table".."id" NHƯ "id",
   "base_table".."id" NHƯ "base_table_id" 
TỪ
   "entity_table" "base_table" 
   THAM GIA BÊN TRONG
      "bảng_thực thể" "bảng_thực thể" 
      BẬT "entity_table".."id" = "base_table".."id"
Ở ĐÂU
 (("entity_table".."name" KHÔNG THÍCH 'TÊN 1' ESCAPE '\') và ("entity_table".."họ" KHÔNG THÍCH 'TÊN 1' ESCAPE '\')) VÀ 
 (("entity_table".."name" KHÔNG THÍCH 'TÊN 2' ESCAPE '\') và ("entity_table".."họ" KHÔNG THÍCH 'HỌ 2' ESCAPE '\')) VÀ ..... .

Tuy nhiên, đoạn mã trên là một ví dụ, tạo ra một liên kết bổ sung cho mỗi mục trong mảng như sau:

LỰA CHỌN
   "base_table".."id" NHƯ "id",
   "base_table".."id" NHƯ "base_table_id" 
TỪ
   "entity_table" "base_table" 
   THAM GIA BÊN TRONG
      "bảng_thực thể" "bảng_thực thể" 
      BẬT "entity_table".."id" = "base_table".."id" 
   THAM GIA BÊN TRONG
      "bảng_thực thể" "bảng_thực thể_2" 
      BẬT "entity_table_2".."id" = "base_table".."id" 
   THAM GIA BÊN TRONG
      "bảng_thực thể" "bảng_thực thể_3" 
      BẬT "entity_table_3".."id" = "base_table".."id" 
   THAM GIA BÊN TRONG
      "bảng_thực thể" "bảng_thực thể_4" 
      BẬT "entity_table_4".."id" = "base_table".."id" 

      Ở ĐÂU
   (("entity_table".."name" KHÔNG THÍCH 'TÊN 1' ESCAPE '\') và ("entity_table".."họ" KHÔNG THÍCH 'TÊN 1' ESCAPE '\')) VÀ 
   (("entity_table_2".."name" KHÔNG THÍCH 'TÊN 2' ESCAPE '\') và ("entity_table_2".."họ" KHÔNG THÍCH 'HỌ 2' ESCAPE '\')) VÀ 
   (("entity_table_3".."name" KHÔNG THÍCH 'TÊN 3' ESCAPE '\') và ("entity_table_3".."họ" KHÔNG THÍCH 'TÊN 3' ESCAPE '\')) VÀ 
   (("entity_table_4".."name" KHÔNG THÍCH 'TÊN 4' ESCAPE '\') và ("entity_table_4".."họ" KHÔNG THÍCH 'TÊN 4' ESCAPE '\'))

Trong đoạn trích từ truy vấn này, tôi chỉ hiển thị 4 điều kiện tạo ra 4 phép nối, nhưng nếu tôi có 500 thì nó sẽ tạo ra 500 phép nối. Điều gì sẽ là cách chính xác để viết điều kiện để tránh những phép nối không cần thiết này?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.