Điểm:1

entityQuery trả về kết quả sai: có quá nhiều phép nối?

lá cờ cn

Tôi đã tạo một truy vấn thực thể cho loại thực thể tùy chỉnh "bỏ phiếu". Tôi chỉ muốn nhận được những phiếu bầu đó cho một cuộc thăm dò cụ thể và những phiếu bầu của các đại biểu là thành viên của một nhóm cụ thể. Tư cách thành viên theo phân số có thể thay đổi theo thời gian của cơ quan lập pháp, vì vậy, chúng tôi có một thực thể tùy chỉnh bổ sung thuộc loại "fraction_membership" trong đó phân số và thời gian mà tư cách thành viên theo phân số có hiệu lực có thể được đặt. Vì vậy, những gì chúng tôi cần là một truy vấn chỉ cung cấp phiếu bầu của các thành viên của phần nhỏ là thành viên của nhóm tại thời điểm thăm dò ý kiến.

Thời gian hợp lệ của một phần_thành_viên có thể được đặt trong hai trường ngày: hợp lệ_từ và hợp lệ_cho đến khi.

$fractionId = 22;
$pollId = 1234;
$pollDate = '2020-05-10'
$query = \Drupal::entityQuery('bỏ phiếu');
$query->condition('poll', $pollId, '=');
$query->range(0, 100);
$query->sort('id, 'DESC');
$query->condition('mandate.entity.fraction_membership.entity.fraction', fractionId);
$truy vấn->điều kiện(
   $query->orConditionGroup()
      ->notExists('mandate.entity.fraction_membership.entity.valid_from')
      ->điều kiện('mandate.entity.fraction_membership.entity.valid_from', $pollDate, '<=')
);
$truy vấn->điều kiện(
   $query->orConditionGroup()
      ->notExists('mandate.entity.fraction_membership.entity.valid_until')
      ->điều kiện('mandate.entity.fraction_membership.entity.valid_until', $pollDate, '>=')
);

Có hai thực thể Fraction_membership được kết nối với một nhiệm vụ duy nhất của một cấp phó cụ thể vì anh ta đã thay đổi tư cách thành viên phân số của mình:

Các mục trong bảng phân số_thành viên:

| id | phân số | hợp_từ | hợp lệ_until
| 123 | 22 | NULL | 2019-09-27
| 456 | 231 | 28-09-2019 | VÔ GIÁ TRỊ

Vấn đề: với phân số 22 và ngày thăm dò '2020-05-10' được đặt làm bộ lọc, phiếu bầu của cấp phó sẽ đưa vào kết quả mặc dù không có thành viên phân số hợp lệ nào vào thời điểm này. Ngày valid_until cho phân số thành viên có phân số 22 (= 2019-09-27) nhỏ hơn ngày thăm dò ý kiến ​​(= 2020-05-10). Fpr cuộc thăm dò đã cho, phiếu bầu của cấp phó chỉ nên có trong kết quả nếu bộ lọc cho phân số được đặt thành 231.

Tôi đã kiểm tra truy vấn kết quả và đối với tôi, có vẻ như có quá nhiều liên kết được thêm vào. Có thể đây là vấn đề hay tôi đã làm sai điều gì đó?

Truy vấn SQL kết quả:

CHỌN "base_table".."id" NHƯ "id", "base_table".."id" NHƯ "base_table_id"
TỪ
{aw_vote_vote} "base_table"
NGƯỜI TRONG THAM GIA {aw_vote_vote} "aw_vote_vote" BẬT [aw_vote_vote].[id] = [base_table].[id]
BÊN NGOÀI TRÁI THAM GIA {candidacies_mandates} "candidacies_mandates" TRÊN [candidacies_mandates].[id] = [aw_vote_vote].[mandate]
INNER THAM GIA {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership" BẬT [candidacy_mandate__fraction_membership].[entity_id] = [candidacies_mandates].[id]
BÊN NGOÀI TRÁI THAM GIA {fraction_membership} "fraction_membership" BẬT [fraction_membership].[id] = [candidacy_mandate__fraction_membership].[fraction_membership_target_id]
INNER THAM GIA {fraction_membership} "fraction_membership_2" BẬT [fraction_membership_2].[id] = [fraction_membership].[id]
TRÁI THAM GIA {aw_vote_vote} "aw_vote_vote_2" BẬT [aw_vote_vote_2].[id] = [base_table].[id]
BÊN NGOÀI TRÁI THAM GIA {candidacies_mandates} "candidacies_mandates_2" TRÊN [candidacies_mandates_2].[id] = [aw_vote_vote_2].[mandate]
TRÁI THAM GIA {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership_2" TRÊN [candidacy_mandate__fraction_membership_2].[entity_id] = [candidacies_mandates_2].[id]
BÊN NGOÀI TRÁI THAM GIA {fraction_membership} "fraction_membership_3" BẬT [fraction_membership_3].[id] = [candidacy_mandate__fraction_membership_2].[fraction_membership_target_id]
TRÁI THAM GIA {fraction_membership} "fraction_membership_4" BẬT [fraction_membership_4].[id] = [fraction_membership_3].[id]
BÊN NGOÀI TRÁI THAM GIA {candidacies_mandates} "candidacies_mandates_3" TRÊN [candidacies_mandates_3].[id] = [aw_vote_vote_2].[mandate]
BÊN NGOÀI TRÁI THAM GIA {fraction_membership} "fraction_membership_5" BẬT [fraction_membership_5].[id] = [candidacy_mandate__fraction_membership_2].[fraction_membership_target_id]
TRÁI THAM GIA {fraction_membership} "fraction_membership_6" BẬT [fraction_membership_6].[id] = [fraction_membership_5].[id]
TRÁI THAM GIA {aw_vote_vote} "aw_vote_vote_3" BẬT [aw_vote_vote_3].[id] = [base_table].[id]
BÊN NGOÀI TRÁI THAM GIA {candidacies_mandates} "candidacies_mandates_4" TRÊN [candidacies_mandates_4].[id] = [aw_vote_vote_3].[mandate]
TRÁI THAM GIA {candidacy_mandate__fraction_membership} "candidacy_mandate__fraction_membership_3" TRÊN [candidacy_mandate__fraction_membership_3].[entity_id] = [candidacies_mandates_4].[id]
BÊN NGOÀI TRÁI THAM GIA {fraction_membership} "fraction_membership_7" BẬT [fraction_membership_7].[id] = [candidacy_mandate__fraction_membership_3].[fraction_membership_target_id]
TRÁI THAM GIA {fraction_membership} "fraction_membership_8" BẬT [fraction_membership_8].[id] = [fraction_membership_7].[id]
BÊN NGOÀI TRÁI THAM GIA {candidacies_mandates} "candidacies_mandates_5" TRÊN [candidacies_mandates_5].[id] = [aw_vote_vote_3].[mandate]
BÊN NGOÀI TRÁI THAM GIA {fraction_membership} "fraction_membership_9" BẬT [fraction_membership_9].[id] = [candidacy_mandate__fraction_membership_3].[fraction_membership_target_id]
TRÁI THAM GIA {fraction_membership} "fraction_membership_10" BẬT [fraction_membership_10].[id] = [fraction_membership_9].[id]
WHERE ("aw_vote_vote".."poll" = :db_condition_placeholder_0) AND ("fraction_membership_2".."fraction" = :db_condition_placeholder_1) AND (("fraction_membership_4".."valid_from" LÀ NULL) hoặc ("fraction_membership_6".."valid_from" >= :db_condition_placeholder_2)) AND (("fraction_membership_8".."valid_until" IS NULL) hoặc ("fraction_membership_10".."valid_until" <= :db_condition_placeholder_3))
NHÓM THEO base_table.id
ĐẶT HÀNG BẰNG "base_table",."id" DESC
GIỚI HẠN 100 BÙA 0

Đă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.