web-dev-qa-db-ja.com

cronの実行中に段落フィールドをNULLに設定する際のエラー

Drupal 8を使用しており、hook_cronノードフィールドをNULLに設定します。これが私のコードです:

if ($lesson->field_lesson_ended_at->value < $current_time && $session_id && count($paragraphs) > 0) {
  $pids = [];
  foreach ($paragraphs as $paragraph) {
    $pids[] = $paragraph['target_id'];
  }
  $storage_handler = \Drupal::entityTypeManager()->getStorage('paragraph');
  $entities = $storage_handler->loadByProperties(['id' => $pids]);

  foreach ($entities as $entity) {
    try {
      $apiObj->forceDisconnect($session_id, $entity->get('field_session_connection_id')->value);
    } catch (Exception $e) {

    }
  }
  $storage_handler->delete($entities);
  $lesson->set("field_session_id", NULL);
  $lesson->save();
}

Cronタスクがこれらの行に到達すると:

$lesson->set("field_session_id", NULL);
$lesson->save();

次のエラーをスローします(cronログから取得):

Error: Call to a member function getTranslation() on null in Drupal\Core\Entity\ContentEntityBase->hasTranslationChanges() (line 1430 of core\lib\DRupal\Core\Entity\ContentEntityBase.php)

この問題を解決する方法に関するアイデアはありますか?

1

順序を変更した後でcronジョブが機能している場合でも、保存された親エンティティを使用すると、後で同じエラーが発生する可能性があります。

参照されている段落エンティティをプログラムで削除しないでください(順序を変更した後の最後のコマンド)。エンティティ参照リビジョンモジュールは、段落を参照しているすべてのリビジョンが削除された後、これを自動的に処理しています。

0
4k4