下面是我的解决方案,其中有一个示例,可能会对您有所帮助。
Update existing field
$target_id = 62;
$paragraph = Paragraph::load($target_id);
$typeform_field = $paragraph->field_archtics_field->value;
$archtics_field = $paragraph->field_archtics_label->value;
$paragraph->set('field_fieldname1', 'TEST1');
$paragraph->set('field_fieldname2', 'TEST2');
$paragraph->save();
//创建字段并在节点中附加可以在这里找到。 https://www.drupal.org/project/paragraphs/issues/2707017
Thanks
答案 0 :(得分:6)
代码中的注释应该解释所有内容:
<?php
use Drupal\paragraphs\Entity\Paragraph;
// Create single new paragraph
$paragraph = Paragraph::create([
'type' => 'paragraph_machine_name',
'field_machine_name' => 'Field value',
]);
$paragraph->save();
// Create multiple new paragraphs
$multiParagraph1 = Paragraph::create([
'type' => 'paragraph_machine_name',
'field_machine_name' => 'Field value',
]);
$multiParagraph2 = Paragraph::create([
'type' => 'paragraph_machine_name',
'field_machine_name' => 'Field value',
]);
$multiParagraph1->save();
$multiParagraph2->save();
// Save paragraph to node it belongs to
$newCompanyNode = Node::create([
'type' => 'node_machine_name',
'title' => 'new_node_title',
// Insert a single paragraph
'node_field_paragraph_machine_name' => array(
'target_id' => $paragraph->id(),
'target_revision_id' => $paragraph->getRevisionId(),
),
// Insert multiple paragraphs into the same reference field
'node_paragraph_field_machine_name' => array(
array(
'target_id' => $multiParagraph1->id(),
'target_revision_id' => $multiParagraph1->getRevisionId(),
),
array(
'target_id' => $multiParagraph2->id(),
'target_revision_id' => $multiParagraph2->getRevisionId(),
),
),
]);
// Makes sure this creates a new node
$newCompanyNode->enforceIsNew();
// Saves the node
// Can also be used without enforceIsNew() which will update the node if a $newCompanyNode->id() already exists
$newCompanyNode->save();
答案 1 :(得分:0)
以下是更新现有段落项目的示例(使用所需的值填写$ nid和$ paragraph_field):
$entity = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
$result = $entity->get($paragraph_field)->referencedEntities();
if (!empty($result)) {
foreach ($result as $paragraph) {
$paragraph->set('field_fieldname1', 'some value');
$paragraph->save();
}
}