Score:2

กำจัดผลลัพธ์จากความสัมพันธ์ (เพิ่มเงื่อนไข ON เพื่อเข้าร่วม)

ธง de

ฉันต้องเพิ่มเงื่อนไขเปิดในการดูเข้าร่วม ฉันไม่สามารถใช้ตัวกรองตามบริบทได้ เนื่องจากจะกรองผลลัพธ์ทั้งหมดออก และฉันต้องได้รับผลลัพธ์โดยไม่คำนึงถึง (มีการรวมอื่นๆ) ดังนั้นฉันต้องแน่ใจว่าตัวกรองเกิดขึ้นใน JOIN ไม่ใช่เงื่อนไข WHERE

เพื่อให้เฉพาะเจาะจงมากขึ้น ฉันต้องการแสดงค่าเมื่อไม่มีความสัมพันธ์อยู่ ความสัมพันธ์มาจากโหนดประเภทหนึ่งไปยังอีกโหนดประเภทเดียวกัน และฉันไม่ต้องการดึงโหนดปัจจุบัน ดังนั้นเงื่อนไขการเปิดควรเป็น และ join_table.id != original_table.id.

ฉันยังใหม่กับการเปลี่ยนแปลงแบบสอบถามมุมมอง ใครสามารถให้ความช่วยเหลือเกี่ยวกับวิธีเพิ่มเงื่อนไข ON ให้กับแบบสอบถาม Views ผ่าน UI ของผู้ดูแลระบบ (ถ้าเป็นไปได้) หรือผ่านการแก้ไขแบบสอบถาม

ขอขอบคุณ

sonfd avatar
in flag
สิ่งนี้ช่วยได้หรือไม่? https://drupal.stackexchange.com/a/251700/48114
Jaypan avatar
de flag
เกือบจะ แต่ไม่ใช่ แสดงวิธีเพิ่มเงื่อนไข 'เปิด' แต่เงื่อนไขเป็นค่าคงที่ โดยที่ I เงื่อนไขจะอยู่ในคอลัมน์ตารางอื่น
sonfd avatar
in flag
คุณสามารถใช้ตัวเลือกอื่นๆ ที่ระบุไว้ที่นี่: https://api.drupal.org/api/drupal/core%21modules%21views%21src%21Plugin%21views%21join%21JoinPluginBase.php/property/JoinPluginBase%3A%3Aextra /8.2.x
Jaypan avatar
de flag
ขอบคุณสำหรับข้อมูลเพิ่มเติม ฉันเล่นกับมันมาระยะหนึ่งแล้ว แต่ฉันไม่เห็นชุดค่าผสมใด ๆ ที่ช่วยให้ฉันได้รับตารางและคอลัมน์ที่ถูกต้องซึ่งอ้างอิงในแบบสอบถาม โดยเฉพาะอย่างยิ่งเมื่อต้องใช้ `value` แต่ฉันไม่ได้ทำงานกับค่า ฉัน กำลังทำงานกับชื่อคอลัมน์
Score:3
ธง de

ขอบคุณความช่วยเหลือจาก sonfd ด้านบน ฉันสามารถหาทางออกได้หลายอย่าง ฉันไม่สามารถเปรียบเทียบทั้งสองคอลัมน์ในขณะที่ฉันพยายาม แต่ฉันสามารถใช้ $view->หาเรื่อง เพื่อให้ได้ผลลัพธ์ที่ฉันต้องการ

หากต้องการตอบคำถามเกี่ยวกับวิธีเพิ่มเงื่อนไขเปิดเพิ่มเติมในการเข้าร่วม คุณสามารถทำสิ่งต่อไปนี้:

ฟังก์ชัน HOOK_views_query_alter (ViewExecutable $view, QueryPluginBase $query) {
  ถ้า ($view->id() == VIEW_ID && $view->current_display === DISPLAY_ID) {
    $table = $query->getTableInfo(TABLE_NME);
    $table['join']->extra = blank($table['join']->extra) ? [] : $table['join']->พิเศษ;
    $table['join']->พิเศษ[] = ​​[
      'ฟิลด์' => FIELD_NAME,
      'ตัวดำเนินการ' => '!=',
      'value' => VALUE, // ในกรณีของฉัน $view->args[0],
    ];
  }
}

โพสต์คำตอบ

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