I want to get a list of nodes and return them as JSON along with their tags (names included). After a lot of research, I've only come up with this solution:
I have an array of Nodes (
\Drupal\Core\Entity\EntityInterface) loaded with
Iterating over the array of nodes, and getting their tags using
$node->field_tags (or whatever the machine name of the tags is) which yields an array of
Getting all the terms of the node using
Term::loadMultiple() and then iterating over them and getting the name using
The problem is that there's an extra database read for every node, and I guess that the underlying query for this read is a JOIN :|.
Question: Is there an efficient way to load the tag (term) names along with
target_uuid, etc? If no, is the current loop on each node the way to go???
- I'm paginating the results
- The client can set the number of results per page, but there's a 50 nodes per page limit
P.S.: I have two more types of tags so I have to do this two more times. Bright side is, the other two tags are 1to1.