Рейтинг:1

Как обновить поле таксономии с массивом терминов?

флаг fr

у меня такое тело

{
    "идентификатор пользователя": 435,
    "идентификатор_территории":[176,139]
}

Где userid — это идентификатор пользователя Drupal. И мне нужно обновить поле field_user_territory которое является полем таксономии. Я не хочу, чтобы ушли более ранние территории, вместо этого мне нужно обновить еще 2 территории.

Это код, который я пробовал.

foreach ($territory_id как $territory_id) {

     
        
            $user = \Drupal\user\Entity\User::load($userid);
            $user->field_user_territory->target_id = $territory_id;
            $пользователь->сохранить();
        
    }

Но здесь прежние территории исчезли.

Рейтинг:3
флаг cn

Вероятно, вы захотите добавить элементы поля:

$user = \Drupal\user\Entity\User::load($userid);
foreach ($territory_id как $territory_id) {
  // полная версия (работает с автозаполнением в IDE)
  $user->get('field_user_territory')->appendItem(['target_id' => $territory_id]);
  // короткая версия в синтаксисе массива
  // $user->field_user_territory[] = $territory_id;
}
$пользователь->сохранить();
Rifas Ali avatar
флаг fr
Спасибо, это сработало
Rifas Ali avatar
флаг fr
Есть ли способ избежать дублирования?
4uk4 avatar
флаг cn
Извините, переместил вторую версию в комментарий.

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

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