Score:1

entityQuery ส่งคืนผลลัพธ์ที่ไม่ถูกต้อง: เข้าร่วมมากเกินไปหรือไม่

ธง cn

ฉันสร้าง EntityQuery สำหรับประเภทเอนทิตีแบบกำหนดเอง "โหวต" ฉันเพียงต้องการได้รับคะแนนเสียงเหล่านั้นสำหรับแบบสำรวจเฉพาะและคะแนนจากเจ้าหน้าที่ที่เป็นสมาชิกของเศษส่วนที่เฉพาะเจาะจง การเป็นสมาชิกแบบเศษส่วนสามารถเปลี่ยนแปลงได้ตลอดเวลาของสภานิติบัญญัติ ดังนั้นเราจึงมีเอนทิตีแบบกำหนดเองเพิ่มเติมประเภท "fraction_membership" ซึ่งสามารถตั้งค่าเศษส่วนและเวลาที่การเป็นสมาชิกแบบเศษส่วนได้ สิ่งที่เราต้องการคือแบบสอบถามที่ให้เฉพาะคะแนนเสียงของสมาชิกของเศษส่วนที่เป็นสมาชิกของเศษส่วน ณ เวลาที่สำรวจความคิดเห็น

เวลาที่ถูกต้องของการเป็นสมาชิกของเศษส่วนสามารถตั้งค่าได้ในฟิลด์วันที่สองฟิลด์: valid_from และ valid_until

$fractionId = 22;
$pollId = 1234;
$pollDate = '2020-05-10'
$query = \Drupal::entityQuery('โหวต');
$query->condition('โพลล์', $pollId, '=');
$query->range(0, 100);
$query->sort('id, 'DESC');
$query->condition('mandate.entity.fraction_membership.entity.fraction', เศษส่วนรหัส);
$query->condition(
   $query->orConditionGroup()
      ->ไม่มีอยู่ ('mandate.entity.fraction_membership.entity.valid_from')
      ->เงื่อนไข('mandate.entity.fraction_membership.entity.valid_from', $pollDate, '<=')
);
$query->condition(
   $query->orConditionGroup()
      ->ไม่มีอยู่ ('mandate.entity.fraction_membership.entity.valid_until')
      ->เงื่อนไข('mandate.entity.fraction_membership.entity.valid_until', $pollDate, '>=')
);

มีสองหน่วยงานที่เชื่อมต่อกับหน่วยย่อยของสมาชิกย่อยที่เชื่อมต่อกับอาณัติเดียวของเจ้าหน้าที่เฉพาะเนื่องจากเขาเปลี่ยนการเป็นสมาชิกเศษส่วนของเขา:

รายการในตาราง fraction_membership:

| รหัส | เศษส่วน | valid_จาก | ใช้ได้ถึงวันที่
| 123 | 22 | โมฆะ | 2019-09-27
| 456 | 231 | 2019-09-28 | โมฆะ

ปัญหา: ด้วยเศษส่วน 22 และวันที่สำรวจความคิดเห็น '2020-05-10' ที่ตั้งค่าเป็นตัวกรองการลงคะแนนของรองพบว่ามันกำลังเข้าสู่ผลลัพธ์แม้ว่าจะไม่มีการเป็นสมาชิกเศษส่วนที่ถูกต้องในขณะนี้ วันที่ valid_until สำหรับการเป็นสมาชิกเศษส่วนที่มีเศษ 22 (= 2019-09-27 2019) น้อยกว่าวันที่สำรวจความคิดเห็น (= 2020-05-10) Fpr แบบสำรวจที่กำหนด การลงคะแนนของรองควรอยู่ในผลลัพธ์หากตั้งค่าตัวกรองสำหรับเศษส่วนเป็น 231

ฉันตรวจสอบข้อความค้นหาที่เป็นผลลัพธ์แล้ว และดูเหมือนว่าจะมีการเพิ่มการรวมมากเกินไปสำหรับฉัน เป็นไปได้ไหมว่านี่เป็นปัญหาหรือฉันทำอะไรผิดหรือเปล่า?

แบบสอบถาม SQL ที่ได้:

เลือก "base_table"."id" เป็น "id", "base_table"."id" เป็น "base_table_id"
จาก
{aw_vote_vote} "ฐานโต๊ะ"
เข้าร่วมภายใน {aw_vote_vote} "aw_vote_vote" บน [aw_vote_vote] [id] = [base_table] [id]
ด้านซ้ายเข้าร่วม {candidacies_mandates} "candidacies_mandates" บน [candidacies_mandates] [id] = [aw_vote_vote] [mandate]
เข้าร่วมภายใน {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership" บน [candidacy_mandate__fraction_membership].[entity_id] = [candidacies_mandates].[id]
ด้านซ้ายเข้าร่วม {fraction_membership} "fraction_membership" บน [fraction_membership] [id] = [candidacy_mandate__fraction_membership] [fraction_membership_target_id]
เข้าร่วมภายใน {fraction_membership} "fraction_membership_2" บน [fraction_membership_2].[id] = [fraction_membership].[id]
ซ้ายเข้าร่วม {aw_vote_vote} "aw_vote_vote_2" บน [aw_vote_vote_2].[id] = [base_table].[id]
ด้านซ้ายเข้าร่วม {candidacies_mandates} "candidacies_mandates_2" บน [candidacies_mandates_2].[id] = [aw_vote_vote_2][mandate]
ซ้าย เข้าร่วม {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership_2" บน [candidacy_mandate__fraction_membership_2][entity_id] = [candidacies_mandates_2][id]
ด้านซ้ายเข้าร่วม {fraction_membership} "fraction_membership_3" บน [fraction_membership_3].[id] = [candidacy_mandate__fraction_membership_2].[fraction_membership_target_id]
ซ้ายเข้าร่วม {fraction_membership} "fraction_membership_4" บน [fraction_membership_4].[id] = [fraction_membership_3].[id]
ซ้ายด้านนอกเข้าร่วม {candidacies_mandates} "candidacies_mandates_3" บน [candidacies_mandates_3].[id] = [aw_vote_vote_2][mandate]
ด้านซ้ายเข้าร่วม {fraction_membership} "fraction_membership_5" บน [fraction_membership_5].[id] = [candidacy_mandate__fraction_membership_2].[fraction_membership_target_id]
ซ้ายเข้าร่วม {fraction_membership} "fraction_membership_6" บน [fraction_membership_6].[id] = [fraction_membership_5].[id]
ซ้ายเข้าร่วม {aw_vote_vote} "aw_vote_vote_3" บน [aw_vote_vote_3].[id] = [base_table].[id]
ด้านซ้ายเข้าร่วม {candidacies_mandates} "candidacies_mandates_4" บน [candidacies_mandates_4].[id] = [aw_vote_vote_3][mandate]
ซ้าย เข้าร่วม {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership_3" บน [candidacy_mandate__fraction_membership_3][entity_id] = [candidacies_mandates_4][id]
ด้านซ้ายเข้าร่วม {fraction_membership} "fraction_membership_7" บน [fraction_membership_7].[id] = [candidacy_mandate__fraction_membership_3].[fraction_membership_target_id]
ซ้ายเข้าร่วม {fraction_membership} "fraction_membership_8" บน [fraction_membership_8].[id] = [fraction_membership_7].[id]
ซ้ายด้านนอกเข้าร่วม {candidacies_mandates} "candidacies_mandates_5" บน [candidacies_mandates_5].[id] = [aw_vote_vote_3][mandate]
ด้านซ้ายเข้าร่วม {fraction_membership} "fraction_membership_9" บน [fraction_membership_9].[id] = [candidacy_mandate__fraction_membership_3].[fraction_membership_target_id]
ซ้ายเข้าร่วม {fraction_membership} "fraction_membership_10" บน [fraction_membership_10].[id] = [fraction_membership_9].[id]
WHERE ("aw_vote_vote"."poll" = :db_condition_placeholder_0) และ ("fraction_membership_2"."fraction" = :db_condition_placeholder_1) AND (("fraction_membership_4"."valid_from" IS NULL) หรือ ("fraction_membership_6"."valid_from" >= :db_condition_placeholder_2)) และ (("fraction_membership_8"."valid_until" IS NULL) หรือ ("fraction_membership_10"."valid_until" <= :db_condition_placeholder_3))
จัดกลุ่มตาม base_table.id
สั่งซื้อโดย "base_table"."id" DESC
จำกัด 100 ชดเชย 0

โพสต์คำตอบ

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