Puncte:1

Creați mai multe câmpuri dintr-un câmp matrice

drapel ro

Am o vizualizare Drupal bazată pe o entitate care este extrasă dintr-o altă bază de date (este o entitate CiviCRM extrasă în Drupal cu ajutorul Entitatea CiviCRM modulul Drupal).

Unul dintre câmpurile pe care le folosesc este un câmp de matrice (să spunem că se numește câmp de matrice), care scoate o matrice ca item1, item2, item3 (articolele sunt șiruri de caractere) pentru fiecare instanță a entității. Numărul de elemente (adică lungimea matricei de câmp de matrice) este limitată la un anumit număr pentru fiecare instanță a entității.

Acum vreau să am fiecare dintre acestea articoleste disponibil ca un câmp separat în vizualizarea Drupal. Numele câmpului ar trebui să fie elementul 1 etc. iar valoarea câmpului ar trebui să fie 1 dacă elementul 1 există în asta câmp de matricematricea lui și 0 dacă elementul 1 nu există acolo.

Cum pot realiza asta? M-am gandit la mai multe solutii:

  1. incluzând cumva o funcție în interiorul Drupal Views care va „exploda” câmpul meu matrice în alte câteva câmpuri. Știu că funcționalitatea este acolo, pentru că acum pot filtra câmp de matrice pentru valori specifice cu un filtru normal Drupal Views - adică Drupal Views caută prin intermediul câmp de matrice matrice. Pur și simplu nu pot accesa această funcționalitate pentru scopul meu.
  2. folosind Vizualizări PHP -- Am citit că nu trebuie folosit din motive de securitate: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/ precum si performanta: https://www.drupal.org/project/views_php
  3. Crearea unui mic modul Drupal personalizat pentru împărțire câmp de matrice. Problema este că pare să creeze un nou tabel cu valorile împărțite. Dar trebuie să pot accesa aceste valori într-o vizualizare Drupal bazată pe o entitate existentă. Adică, nu pot lucra cu tabele aleatoare, deoarece acestea nu vor fi disponibile în vizualizarea mea Drupal Relații.
  4. Clonarea entității existente (în baza de date CiviCRM), împărțirea valorilor lui câmp de matrice, creând un nou atribut de entitate pentru fiecare dintre aceste valori (0 sau 1 din nou), creând o relație între entitatea originală și noua entitate, făcând noua entitate disponibilă în Drupal prin Entitatea CiviCRM modul și includerea noii entități în vizualizările Drupal prin Relații. Problema este că am prefera să nu schimbăm prea mult baza de date inițială, dacă este posibil.
  5. Din păcate, pare a fi imposibil să clonezi și să schimbi entitatea doar din partea Drupal, deoarece Entitatea CiviCRM Modulul nu copiază entitatea în Drupal, ci doar extrage informațiile din baza de date inițială.

Are cineva un indiciu? Necesitatea de a împărți o matrice nu mi se pare atât de complexă, sincer, așa că ar trebui să existe o soluție mai simplă pentru aceasta în interiorul Drupal Views decât crearea de entități suplimentare. Este doar o chestiune de afișare, aproape, deoarece nu sunt necesare informații suplimentare.

Caz de utilizare/Obiectiv: Am un sistem cu o bază de date Drupal și una CiviCRM, pe care vreau să îl completez cu niște statistici. Am creat un Drupal View pentru fiecare întrebare statistică, care își extrage informațiile din baza de date CiviCRM cu ajutorul Entitatea CiviCRM Modul Drupal. Dar datele (care sunt opțiuni cu alegere multiplă) vin ca o serie de opțiuni. Nu pot număra corect opțiunile cu Drupal Views dacă nu sunt disponibile ca valori unice.

Jaypan avatar
drapel de
Probabil că există o soluție mai drupală pentru problema dvs., dar ne-ați spus doar detaliile tehnice ale modului în care încercați să atingeți un anumit obiectiv, dar nu ne-ați explicat scopul. Dacă explicați cazul de utilizare din lumea reală, cineva poate fi capabil să ofere modalitatea Drupal de a-l realiza.
drapel lk
Aș ridica această întrebare pe canalul civicrm_entity de la https://chat.civicrm.org - acolo sunt cei care lucrează cel mai activ cu acest modul tind să iasă.
emma avatar
drapel ro
Șeful meu a pus întrebarea în CiviCRM Chat și a primit sfatul să schimbe modul în care datele cu alegere multiplă sunt stocate în CiviCRM. Mi-am dat seama înainte că modul în care CiviCRM stochează valorile cu alegere multiplă este ciudat/nerecomandat (a se vedea https://dba.stackexchange.com/questions/291361/transform-a-varchar-field-with-delimiters-into-multiple- rows?noredirect=1#comment570065_291361 ). Dar schimbarea bazei de date CiviCRM pare a fi o soluție foarte dificilă pentru împărțirea unui câmp de matrice în Drupal Views.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.