web-dev-qa-db-ja.com

プログラムでUUIDを更新するにはどうすればよいですか?

理由: uidの受信が存在しないというエラー。調査すると、このエラーは、既存の列の段落を編集または保存したときにのみ表示されます。新しい列の段落を作成しても、新しく作成された列の段落ではUUIDが異なるため、エラーは表示されません。

これが、そのページで参照されている段落のUUIDを更新する理由です。カスタムモジュールで、以下のエンティティクエリを使用してすべてのノードをロードし、参照されている段落をロードしました。

$nids = \Drupal::entityQuery('node')
  ->condition('type', 'page')
  ->execute();
$nodes = \Drupal\node\Entity\Node::loadMultiple($nids);

  foreach ($nodes as $n) {
   //Relevant apragraph for the content type
   $para = $n->get('field_page_content')->getValue();
   $para_2 = $n->get('field_banner_image')->getValue();

   foreach($para as $e){
     $p = \Drupal\paragraphs\Entity\Paragraph::load($e['target_id']);

    if($p->bundle() == "columns"){
      kint($p,'Paragraph Entity');
      kint($p->uuid(),'Paragraph UUID');

       $uuid = 'd12da227-890b-4eb7-86b1-93937e7d6d91';

       //save paragraph
       //$p->save();

    }
  }
}

列の段落を再作成せずにこれを更新するにはどうすればよいですか?.

1
Regokonda

これはテストしていませんが、この方法でUUIDを追加する必要がある場合は、この方法が適していると思います。

$uuid = 'd12da227-890b-4eb7-86b1-93937e7d6d91';
$p->set('uuid',$uuid);
$p->save();

うまくいかない場合はお知らせください。

1
Matt