'entityInsertOrUpdate', HookEventDispatcherInterface::ENTITY_UPDATE => 'entityInsertOrUpdate', ]; } public function entityInsertOrUpdate(BaseEntityEvent $event): void { if ($event->getEntity()->getEntityTypeId() != 'node') { return; } if ($event->getEntity()->bundle() != 'talk') { return; } $this->updateCreatedDate($event->getEntity()); } private function updateCreatedDate(EntityInterface $talk): void { if (!$eventDate = $this->findLatestEventDate($talk)) { return; } $talkDate = Carbon::parse($eventDate)->getTimestamp(); if ($talkDate == $talk->get('created')->getString()) { return; } $talk->set('created', $talkDate); } /** * Find the date for the latest event. * * @return string|null */ private function findLatestEventDate(EntityInterface $talk) { return Collection::make($talk->get('field_events')->referencedEntities()) ->map(fn(ParagraphInterface $event) => $event->get('field_date') ->getString()) ->max(); } }