Puncte:0

Schimbați tipul/pachetul unui nod păstrați vechiul tip/pachet în tabelele de câmp

drapel cn

Trebuie să schimb pachetul/tipul unor noduri. am incercat https://www.drupal.org/project/convert_bundles dar nu a existat nicio modalitate de a selecta doar câteva noduri și de a schimba pachetul/tipul, așa că am încercat o modalitate foarte simplă:

  $nod = Nod::load(123);
  $node->set('tip', 'nume_tip_nou');
  $nod->salvare();

Acest lucru pare să funcționeze: tipul de conținut al nodului s-a schimbat. Dar când mă uit la tabelele bazei de date ale câmpului, există încă vechiul nume de tip/pachet în coloana „bundle” pentru fiecare câmp al acestui nod. Acest lucru se schimbă numai atunci când schimb de fapt câmpul din formularul de editare a nodului și îl salvez.

Întrebarea mea: știe cineva dacă există efecte secundare atunci când există câmpuri conectate la un nod unde în tabelul câmpului este stocat numele greșit al pachetului?

john Smith avatar
drapel gr
Cred că trebuie să rulați cron și field_cron() va elimina intrările orfane db? https://drupal.stackexchange.com/questions/38328/clean-deleted-field-from-database
Tobias Krause avatar
drapel cn
Cred că există o neînțelegere: nu există intrări db orfane. Intrările din tabelele de câmp sunt corect conectate la o entitate existentă. Doar în intrarea db a câmpului, pachetul vechi al acestei entități este încă setat. Și mă întreb dacă această diferență (pachet în tabelul de bază al entității și pachetul în tabelul de câmp) poate crea probleme.
Tobias Krause avatar
drapel cn
Știu că am urmat calea descrisă aici http://www.noreiko.com/blog/changing-type-node cu unele ajustări. În acest fel, valoarea pachetului este actualizată în fiecare tabel de câmp, dar las întrebarea deschisă, deoarece aș fi interesat de răspuns.
Puncte:0
drapel cn

As commented by @johnSmith, purging is the problem here, but there are two different purging processes. The first one is triggered when the field storage is removed and the entire table is marked as deleted and purged in cron runs, this should still work. The second one is triggered when a field is removed only from a bundle. Then the affected field items are marked as deleted and purged. This doesn't work any longer. But even if this doesn't bother you and you don't notice other side effects, I still would recommend to update every field table and leave the entity tables in a consistent state as described in the latest comment.

Tobias Krause avatar
drapel cn
Nu aceasta este problema: niciun câmp nu este eliminat/șters în niciun fel. Câmpurile tipului de entitate sursă și ale noului tip de entitate sunt aceleași în acest moment.
4uk4 avatar
drapel cn
Am descris două operațiuni pe teren, una încă funcționează și alta nu. Aș reveni la funcționare completă, pentru viitor, nu pentru moment.

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.