Answers:
您需要使用类似于以下的代码。
$node = Node::load($nid);
$node->field_code_used_by->target_id = $user_id;
$node->save();
对于多值字段,要将值添加到列表的末尾,请使用以下代码。
$node->field_code_used_by[] = ['target_id' => $user_id];
另一种方法是entity
使用实体对象设置属性,如以下代码所示。
$node = Node::load($nid);
$user = \Drupal\user\Entity\User::load(1);
$node->field_code_used_by->entity = $user;
$node->save();
像D7中一样,D8中参考字段的主要属性仍然是target id
:
$node->field_code_used_by->target_id = $user_id;
该entity
属性是一个计算值。如果将对象放入此值,则drupal会将其转换回id,然后再将其保存到dababase。
多值字段
将项目添加到多值字段:
$node->field_code_used_by[] = ['target_id' => $user_id];
该属性target_id
不是必需的,因为它是main属性,默认情况下使用。因此,对于大多数字段,您可以在一个简单的php数组中添加一个值,该值很容易记住:
$node->field_code_used_by[] = $user_id;