nodeStorage = $entityTypeManager->getStorage('node'); } public function getFor(Post $post): Collection { $tags = $post->get('field_tags')->referencedEntities(); if (!$tags) { return new Collection(); } $tagIds = (new Collection($tags)) ->map(fn(TermInterface $tag) => $tag->id()) ->values(); $query = $this->nodeStorage->getQuery(); // Ensure that the current node ID is not returned as a related post. $query->condition('nid', $post->id(), '!='); $query->condition('field_tags', $tagIds->toArray(), 'IN'); /** @var array $postIds */ $postIds = $query->execute(); $posts = $this->nodeStorage->loadMultiple($postIds); return (new Collection($posts))->values(); } }