Как обновить одно поле, если другое поле имеет определенные термины?

Главные вкладки

Аватар пользователя sashken sashken 10 февраля 2022 в 17:36

Есть два поля. field_category_old и field_category_new

Есть два списка с терминами

список с терминами из поля field_category_old
5, 14
5, 8
5, 11
5, 23
...

список терминов которые надо добавить в поле field_category_new
121
144
157
182
...

Подскажите, пожалуйста, как сделать следующее:

Выбрать ноду с терминами из первой строки из первого списка.
Присвоить полю field_category_new значение первой строки из второго списка.
Сохранить ноду.

И так весь список

Комментарии

Аватар пользователя voviko voviko 10 февраля 2022 в 23:06

Как то так...
Возможно этот код выполниться при обновлении через VBO и тп.

<?php
function mymodule_entity_presave(Drupal\Core\Entity\EntityTypeInterface $entity) {
  if (
$entity->getEntityType()->id() == 'node' && $entity->bundle() == 'my_type') {
    
$terms $entity->get('field_category_old')->referencedEntities();
    
$ids = [];
    foreach (
$terms as $term) {
      
$ids[] = $term->id();
    }
    
$entity->set('field_category_new'$ids);
  }
}
?>