Рейтинг:0

Измените тип/связку узла, сохраните старый тип/связку в таблицах полей.

флаг cn

Мне нужно изменить комплект/тип некоторых узлов. Я пытался https://www.drupal.org/project/convert_bundles но не было возможности выбрать всего несколько узлов и изменить комплект/тип, поэтому я попробовал очень простой способ:

  $node = Node::load(123);
  $node->set('type', 'new_type_name');
  $узел->сохранить();

Кажется, это работает: изменился тип содержимого узла. Но когда я смотрю на таблицы базы данных поля, в столбце «комплект» для каждого поля этого узла все еще есть старое имя типа/пакета. Это меняется только тогда, когда я фактически изменяю поле в форме редактирования узла и сохраняю его.

Мой вопрос: кто-нибудь знает, есть ли побочные эффекты, когда есть поля, подключенные к узлу, где в таблице полей хранится неправильное имя пакета?

john Smith avatar
флаг gr
Я думаю, вам нужно запустить cron, чтобы field_cron() удалит потерянные записи в базе данных? https://drupal.stackexchange.com/questions/38328/очистка удаленного поля из базы данных
Tobias Krause avatar
флаг cn
Я думаю, что есть недоразумение: нет бесхозных db-записей. Записи в таблицах полей правильно связаны с существующим объектом. Только в записи db поля все еще установлен старый пакет этой сущности. И мне интересно, может ли эта разница (связка в базовой таблице сущностей и связка в таблице полей) создавать какие-либо проблемы.
Tobias Krause avatar
флаг cn
Я знаю, что следовал пути, описанному здесь http://www.noreiko.com/blog/changing-type-node с некоторыми корректировками. Таким образом, значение пакета обновляется в каждой таблице полей, но я оставляю вопрос открытым, так как мне был бы интересен ответ.
Рейтинг:0
флаг 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
флаг cn
Это не проблема: никакие поля не удаляются/не удаляются. Поля исходного типа сущности и нового типа сущности на данный момент одинаковы.
4uk4 avatar
флаг cn
Я описал две полевые операции, одна все еще работает, а другая нет. Я бы восстановил до полной работы, на будущее, не сейчас.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.