Puncte:2

Eliminați rezultatele unei relații (adăugați o condiție ON la JOIN)

drapel de

Trebuie să adaug o condiție ON la o vizionare JOIN. Nu pot folosi un filtru contextual, deoarece va filtra rezultatele în totalitate și trebuie să obțin un rezultat indiferent (există și alte alături). Deci trebuie să mă asigur că filtrul are loc la JOIN și nu ca o condiție WHERE.

Pentru a fi mai specific, vreau să arăt o valoare atunci când nu există nicio relație. Relația este de la un tip NODE la un alt NODE de același tip și nu vreau să fie recuperat nodul curent. Deci condiția ON ar trebui să fie ȘI join_table.id != original_table.id.

Sunt nou în ceea ce privește modificarea interogărilor de vizualizări. Poate cineva să ofere asistență despre cum să adăugați o condiție ON la o interogare Views, fie prin interfața de utilizare admin (dacă este posibil), fie printr-o modificare a interogării?

Mulțumesc

sonfd avatar
drapel in
Ajută asta? https://drupal.stackexchange.com/a/251700/48114
Jaypan avatar
drapel de
Aproape, dar nu. Arată cum să adăugați o condiție „ON”, dar condiția este pentru o valoare fixă, unde eu condiția să fie pe o altă coloană a tabelului.
sonfd avatar
drapel in
Puteți utiliza unele dintre celelalte opțiuni enumerate aici: https://api.drupal.org/api/drupal/core%21modules%21views%21src%21Plugin%21views%21join%21JoinPluginBase.php/property/JoinPluginBase%3A%3Aextra /8.2.x
Jaypan avatar
drapel de
Vă mulțumim pentru informațiile suplimentare. M-am jucat cu el o vreme, dar nu văd nicio combinație care să-mi permită să obțin tabelele și coloanele potrivite la care se face referire în interogare, mai ales că este necesar „valoare”, dar nu lucrez cu o valoare, eu Lucrez cu un nume de coloană.
Puncte:3
drapel de

Datorită ajutorului de la sonfd de mai sus, am reușit să vin cu o soluție de felul acesta. Nu am reușit să compar cele două coloane așa cum încercam, dar am putut să le folosesc $view->args să vin cu rezultatul pe care mi l-am dorit.

Pentru a răspunde la întrebarea despre cum să adăugați o condiție suplimentară ON la JOIN, puteți face următoarele:

function HOOK_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
  if ($view->id() == VIEW_ID && $view->current_display === DISPLAY_ID) {
    $table = $query->getTableInfo(TABLE_NME);
    $table['join']->extra = empty($table['join']->extra) ? [] : $table['join']->extra;
    $table['join']->extra[] = [
      'field' => FIELD_NAME,
      'operator' => '!=',
      'value' => VALUE, // În cazul meu $view->args[0],
    ];
  }
}

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.