Score:1

สร้างหลายฟิลด์จากฟิลด์อาร์เรย์เดียว

ธง ro

ฉันมี Drupal View ตามเอนทิตีหนึ่งที่ดึงมาจากฐานข้อมูลอื่น (เป็นเอนทิตี CiviCRM ที่ดึงเข้าสู่ Drupal ด้วยความช่วยเหลือของ เอนทิตี CiviCRM โมดูล Drupal)

ฟิลด์หนึ่งที่ฉันใช้คือฟิลด์อาร์เรย์ (สมมติว่าเรียกว่า อาร์เรย์ฟิลด์) ซึ่งส่งออกอาร์เรย์เช่น รายการที่ 1 รายการที่ 2 รายการที่ 3 (รายการเป็นสตริง) สำหรับแต่ละอินสแตนซ์ของเอนทิตี จำนวนรายการ (นั่นคือ ความยาวอาร์เรย์ของ อาร์เรย์ฟิลด์) ถูกจำกัดไว้ที่จำนวนหนึ่งสำหรับแต่ละอินสแตนซ์ของเอนทิตี

ตอนนี้อยากได้แต่ละอัน สิ่งของมีให้ใช้งานเป็นฟิลด์แยกต่างหากใน Drupal View ชื่อฟิลด์ควรเป็น รายการที่ 1 ฯลฯ และค่าฟิลด์ควรเป็น 1 ถ้า รายการที่ 1 มีอยู่ในนี้ อาร์เรย์ฟิลด์อาร์เรย์ของและ 0 ถ้า รายการที่ 1 ไม่มีอยู่จริง

ฉันจะบรรลุสิ่งนี้ได้อย่างไร ฉันคิดวิธีแก้ปัญหาหลายอย่าง:

  1. รวมถึงฟังก์ชั่นภายใน Drupal Views ที่จะ "ระเบิด" ฟิลด์อาร์เรย์ของฉันลงในฟิลด์อื่น ๆ ฉันรู้ว่ามีฟังก์ชันนี้อยู่ เพราะตอนนี้ฉันกรองได้แล้ว อาร์เรย์ฟิลด์ สำหรับค่าเฉพาะด้วยตัวกรอง Drupal Views ปกติ นั่นคือ Drupal Views กำลังค้นหาผ่าน อาร์เรย์ฟิลด์ อาร์เรย์ ฉันไม่สามารถเข้าถึงฟังก์ชันนี้เพื่อจุดประสงค์ของฉันได้
  2. โดยใช้ มุมมอง 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
  3. การสร้างโมดูล Drupal ขนาดเล็กที่กำหนดเองสำหรับการแยก อาร์เรย์ฟิลด์. ปัญหาคือดูเหมือนว่าจะสร้างตารางใหม่ที่มีค่าการแยก แต่ฉันต้องสามารถเข้าถึงค่าเหล่านี้ใน Drupal View ตามเอนทิตีที่มีอยู่ นั่นคือ ฉันไม่สามารถทำงานกับตารางแบบสุ่มได้ เพราะตารางเหล่านั้นจะไม่สามารถใช้ได้ในมุมมอง Drupal ของฉัน ความสัมพันธ์.
  4. การโคลนเอนทิตีที่มีอยู่ (ในฐานข้อมูล CiviCRM) แยกค่าของ อาร์เรย์ฟิลด์สร้างแอตทริบิวต์เอนทิตีใหม่สำหรับแต่ละค่าเหล่านี้ (0 หรือ 1 อีกครั้ง) สร้างความสัมพันธ์ระหว่างเอนทิตีเดิมและเอนทิตีใหม่ ทำให้เอนทิตีใหม่พร้อมใช้งานใน Drupal ผ่าน เอนทิตี CiviCRM โมดูล และรวมถึงเอนทิตีใหม่ในมุมมอง Drupal ผ่าน ความสัมพันธ์. ปัญหาคือ เราไม่ต้องการเปลี่ยนฐานข้อมูลเดิมมากเกินไป ถ้าเป็นไปได้
  5. น่าเสียดายที่ดูเหมือนว่าจะเป็นไปไม่ได้เลยที่จะโคลนและเปลี่ยนเอนทิตีในฝั่ง Drupal เท่านั้น เช่น เอนทิตี CiviCRM โมดูลไม่ได้คัดลอกเอนทิตีไปยัง Drupal แต่จะดึงข้อมูลจากฐานข้อมูลต้นฉบับเท่านั้น

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

กรณีการใช้งาน/เป้าหมาย: ฉันมีระบบที่มี Drupal หนึ่งฐานข้อมูลและฐานข้อมูล CiviCRM หนึ่งฐานข้อมูล ซึ่งฉันต้องการเสริมด้วยสถิติบางอย่าง ฉันสร้าง Drupal View สำหรับคำถามทางสถิติแต่ละข้อ ซึ่งดึงข้อมูลจากฐานข้อมูล CiviCRM ด้วยความช่วยเหลือของ เอนทิตี CiviCRM โมดูล Drupal แต่ข้อมูล (ซึ่งก็คือตัวเลือกปรนัย) มาเป็นอาร์เรย์ของตัวเลือก ฉันไม่สามารถนับตัวเลือกได้อย่างถูกต้องด้วย Drupal Views หากไม่มีให้ใช้งานเป็นค่าเดียว

Jaypan avatar
de flag
มีแนวโน้มว่าจะมีวิธีแก้ปัญหาแบบ drully มากกว่านี้ แต่คุณบอกเราเพียงรายละเอียดทางเทคนิคว่าคุณกำลังพยายามบรรลุเป้าหมายบางอย่างอย่างไร แต่ไม่ได้อธิบายเป้าหมาย หากคุณอธิบายกรณีการใช้งานในโลกแห่งความเป็นจริง อาจมีบางคนสามารถให้วิธี Drupal เพื่อบรรลุผลดังกล่าวได้
lk flag
I would raise this question in the civicrm_entity channel at https://chat.civicrm.org - that's where the folks who are working most actively with this module tend to hang out.
emma avatar
ro flag
เจ้านายของฉันถามคำถามใน CiviCRM Chat และได้รับคำแนะนำให้เปลี่ยนวิธีจัดเก็บข้อมูลปรนัยใน CiviCRM ฉันรู้มาก่อนว่าวิธีที่ CiviCRM เก็บค่าหลายตัวเลือกนั้นแปลก/ไม่แนะนำ (ดู https://dba.stackexchange.com/questions/291361/transform-a-varchar-field-with-delimiters-into-multiple- แถว?noredirect=1#comment570065_291361 ) แต่การเปลี่ยนฐานข้อมูล CiviCRM ดูเหมือนจะเป็นวิธีแก้ปัญหาที่ยากมากสำหรับการแยกฟิลด์อาร์เรย์ใน Drupal Views

โพสต์คำตอบ

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