Điểm:1

Tạo một số trường từ một trường mảng

lá cờ ro

Tôi có Chế độ xem Drupal dựa trên một thực thể được lấy từ cơ sở dữ liệu khác (đó là thực thể CiviCRM được đưa vào Drupal với sự trợ giúp của Thực thể CivilCRM mô-đun Drupal).

Một trong những trường tôi sử dụng là trường mảng (giả sử nó được gọi là trường mảng), xuất ra một mảng như mục1, mục2, mục3 (các mục là chuỗi) cho từng phiên bản của thực thể. Số lượng mục (nghĩa là độ dài mảng của trường mảng) được giới hạn ở một số lượng nhất định cho mỗi phiên bản của thực thể.

Bây giờ tôi muốn có từng cái này mụcs có sẵn dưới dạng một trường riêng biệt trong Chế độ xem Drupal. Tên trường phải là Mục 1 v.v. và giá trị trường phải là 1 nếu Mục 1 tồn tại trong này trường mảngmảng của và 0 nếu Mục 1 không tồn tại ở đó.

Làm thế nào để tôi đạt được điều này? Tôi nghĩ về một số giải pháp:

  1. bằng cách nào đó bao gồm một chức năng bên trong Chế độ xem Drupal sẽ "bùng nổ" trường mảng của tôi thành một số trường khác. Tôi biết chức năng ở đó, bởi vì ngay bây giờ tôi có thể lọc trường mảng đối với các giá trị cụ thể với bộ lọc Chế độ xem Drupal thông thường - nghĩa là Chế độ xem Drupal đang tìm kiếm thông qua trường mảng mảng. Tôi không thể truy cập chức năng này cho mục đích của mình.
  2. sử dụng Chế độ xem PHP -- Tôi đọc thì không nên dùng vì lý do bảo mật: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/ cũng như hiệu suất: https://www.drupal.org/project/views_php
  3. Tạo một mô-đun Drupal nhỏ tùy chỉnh để chia tách trường mảng. Vấn đề là nó dường như tạo một bảng mới với các giá trị phân chia. Nhưng tôi cần có thể truy cập các giá trị này trong Chế độ xem Drupal dựa trên một thực thể hiện có. Đó là, tôi không thể làm việc với các bảng ngẫu nhiên vì chúng sẽ không có sẵn trong chế độ xem Drupal của tôi Các mối quan hệ.
  4. Nhân bản thực thể hiện có (trong cơ sở dữ liệu CiviCRM), tách các giá trị của trường mảng, tạo một thuộc tính thực thể mới cho từng giá trị này (0 hoặc 1 một lần nữa), tạo mối quan hệ giữa thực thể ban đầu và thực thể mới, làm cho thực thể mới có sẵn trong Drupal thông qua Thực thể CivilCRM mô-đun và bao gồm thực thể mới trong chế độ xem Drupal qua Các mối quan hệ. Vấn đề là, chúng tôi không muốn thay đổi cơ sở dữ liệu ban đầu quá nhiều, nếu có thể.
  5. Thật không may, dường như không thể sao chép và thay đổi thực thể chỉ ở phía Drupal, vì Thực thể CivilCRM mô-đun không sao chép thực thể vào Drupal mà chỉ lấy thông tin từ cơ sở dữ liệu gốc.

Có ai có một gợi ý? Thành thật mà nói, nhu cầu tách một mảng dường như không quá phức tạp đối với tôi, vì vậy cần có một giải pháp đơn giản hơn cho vấn đề này bên trong Chế độ xem Drupal hơn là tạo các thực thể bổ sung. Nó gần như chỉ là một câu hỏi về hiển thị, vì không có thông tin bổ sung nào được yêu cầu.

Ca sử dụng/Mục tiêu: Tôi có một hệ thống với một cơ sở dữ liệu Drupal và một CiviCRM mà tôi muốn bổ sung một số thống kê. Tôi đã tạo Chế độ xem Drupal cho từng câu hỏi thống kê, chế độ xem này lấy thông tin từ cơ sở dữ liệu CiviCRM với sự trợ giúp của Thực thể CivilCRM Mô-đun Drupal. Nhưng dữ liệu (là các tùy chọn trắc nghiệm) xuất hiện dưới dạng một loạt các tùy chọn. Tôi không thể đếm chính xác các tùy chọn với Chế độ xem Drupal nếu chúng không có sẵn dưới dạng các giá trị đơn lẻ.

Jaypan avatar
lá cờ de
Có thể có một giải pháp hiệu quả hơn cho vấn đề của bạn, nhưng bạn chỉ cho chúng tôi biết các chi tiết kỹ thuật về cách bạn đang cố gắng đạt được mục tiêu nào đó chứ không giải thích mục tiêu. Nếu bạn giải thích trường hợp sử dụng trong thế giới thực, ai đó có thể cung cấp cách Drupal để đạt được điều đó.
lá cờ lk
Tôi sẽ nêu câu hỏi này trong kênh civilrm_entity tại https://chat.civicrm.org - đó là nơi những người đang làm việc tích cực nhất với mô-đun này có xu hướng lui tới.
emma avatar
lá cờ ro
Sếp của tôi đã đặt câu hỏi trong Trò chuyện CiviCRM và nhận được lời khuyên thay đổi cách lưu trữ dữ liệu trắc nghiệm trong CiviCRM. Trước đó, tôi đã phát hiện ra rằng cách CiviCRM lưu trữ các giá trị nhiều lựa chọn là lạ/không được khuyến nghị (xem https://dba.stackexchange.com/questions/291361/transform-a-varchar-field-with-delimiters-into-multiple- rows?noredirect=1#comment570065_291361 ). Nhưng việc thay đổi cơ sở dữ liệu CiviCRM dường như là một giải pháp rất khó khăn để tách trường mảng trong Chế độ xem Drupal.

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