ฉันมี Drupal View ตามเอนทิตีหนึ่งที่ดึงมาจากฐานข้อมูลอื่น (เป็นเอนทิตี CiviCRM ที่ดึงเข้าสู่ Drupal ด้วยความช่วยเหลือของ เอนทิตี CiviCRM
โมดูล Drupal)
ฟิลด์หนึ่งที่ฉันใช้คือฟิลด์อาร์เรย์ (สมมติว่าเรียกว่า อาร์เรย์ฟิลด์
) ซึ่งส่งออกอาร์เรย์เช่น รายการที่ 1 รายการที่ 2 รายการที่ 3
(รายการเป็นสตริง) สำหรับแต่ละอินสแตนซ์ของเอนทิตี จำนวนรายการ (นั่นคือ ความยาวอาร์เรย์ของ อาร์เรย์ฟิลด์
) ถูกจำกัดไว้ที่จำนวนหนึ่งสำหรับแต่ละอินสแตนซ์ของเอนทิตี
ตอนนี้อยากได้แต่ละอัน สิ่งของ
มีให้ใช้งานเป็นฟิลด์แยกต่างหากใน Drupal View ชื่อฟิลด์ควรเป็น รายการที่ 1
ฯลฯ และค่าฟิลด์ควรเป็น 1
ถ้า รายการที่ 1
มีอยู่ในนี้ อาร์เรย์ฟิลด์
อาร์เรย์ของและ 0
ถ้า รายการที่ 1
ไม่มีอยู่จริง
ฉันจะบรรลุสิ่งนี้ได้อย่างไร ฉันคิดวิธีแก้ปัญหาหลายอย่าง:
- รวมถึงฟังก์ชั่นภายใน Drupal Views ที่จะ "ระเบิด" ฟิลด์อาร์เรย์ของฉันลงในฟิลด์อื่น ๆ ฉันรู้ว่ามีฟังก์ชันนี้อยู่ เพราะตอนนี้ฉันกรองได้แล้ว
อาร์เรย์ฟิลด์
สำหรับค่าเฉพาะด้วยตัวกรอง Drupal Views ปกติ นั่นคือ Drupal Views กำลังค้นหาผ่าน อาร์เรย์ฟิลด์
อาร์เรย์ ฉันไม่สามารถเข้าถึงฟังก์ชันนี้เพื่อจุดประสงค์ของฉันได้
- โดยใช้
มุมมอง PHP
-- ฉันอ่านแล้วไม่ควรใช้เนื่องจากเหตุผลด้านความปลอดภัย: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/
เช่นเดียวกับประสิทธิภาพ: https://www.drupal.org/project/views_php
- การสร้างโมดูล Drupal ขนาดเล็กที่กำหนดเองสำหรับการแยก
อาร์เรย์ฟิลด์
. ปัญหาคือดูเหมือนว่าจะสร้างตารางใหม่ที่มีค่าการแยก แต่ฉันต้องสามารถเข้าถึงค่าเหล่านี้ใน Drupal View ตามเอนทิตีที่มีอยู่ นั่นคือ ฉันไม่สามารถทำงานกับตารางแบบสุ่มได้ เพราะตารางเหล่านั้นจะไม่สามารถใช้ได้ในมุมมอง Drupal ของฉัน ความสัมพันธ์
.
- การโคลนเอนทิตีที่มีอยู่ (ในฐานข้อมูล CiviCRM) แยกค่าของ
อาร์เรย์ฟิลด์
สร้างแอตทริบิวต์เอนทิตีใหม่สำหรับแต่ละค่าเหล่านี้ (0
หรือ 1
อีกครั้ง) สร้างความสัมพันธ์ระหว่างเอนทิตีเดิมและเอนทิตีใหม่ ทำให้เอนทิตีใหม่พร้อมใช้งานใน Drupal ผ่าน เอนทิตี CiviCRM
โมดูล และรวมถึงเอนทิตีใหม่ในมุมมอง Drupal ผ่าน ความสัมพันธ์
. ปัญหาคือ เราไม่ต้องการเปลี่ยนฐานข้อมูลเดิมมากเกินไป ถ้าเป็นไปได้
- น่าเสียดายที่ดูเหมือนว่าจะเป็นไปไม่ได้เลยที่จะโคลนและเปลี่ยนเอนทิตีในฝั่ง Drupal เท่านั้น เช่น
เอนทิตี CiviCRM
โมดูลไม่ได้คัดลอกเอนทิตีไปยัง Drupal แต่จะดึงข้อมูลจากฐานข้อมูลต้นฉบับเท่านั้น
ไม่มีใครมีคำใบ้?
ความจำเป็นในการแยกอาร์เรย์ดูเหมือนจะไม่ซับซ้อนสำหรับฉันจริงๆ ดังนั้นควรมีวิธีแก้ปัญหานี้ใน Drupal Views ที่ง่ายกว่าการสร้างเอนทิตีเพิ่มเติม มันเป็นเพียงคำถามของการแสดงผล เกือบ เนื่องจากไม่ต้องการข้อมูลเพิ่มเติม
กรณีการใช้งาน/เป้าหมาย:
ฉันมีระบบที่มี Drupal หนึ่งฐานข้อมูลและฐานข้อมูล CiviCRM หนึ่งฐานข้อมูล ซึ่งฉันต้องการเสริมด้วยสถิติบางอย่าง ฉันสร้าง Drupal View สำหรับคำถามทางสถิติแต่ละข้อ ซึ่งดึงข้อมูลจากฐานข้อมูล CiviCRM ด้วยความช่วยเหลือของ เอนทิตี CiviCRM
โมดูล Drupal แต่ข้อมูล (ซึ่งก็คือตัวเลือกปรนัย) มาเป็นอาร์เรย์ของตัวเลือก ฉันไม่สามารถนับตัวเลือกได้อย่างถูกต้องด้วย Drupal Views หากไม่มีให้ใช้งานเป็นค่าเดียว