Вы создаете новый $entity
на каждой итерации.
Вы сказали, что при сбросе $name
вы получите такой вывод:
name
age
job
Это означает, что последняя итерация приведет к этому:
foreach ($fieldsData as $uuid => $fieldId) {
$fieldsEntity = $this->getDoctrine()->getRepository($en)->findOneBy(['id' => $fieldId]);
$name = $fieldsEntity->getName();
$entity = new $EntityName();
$func = 'set' . 'job';
$entity->$func("test");
}
$this->em->persist($entity); // you didn't set name in $entity, but only job.
$this->em->flush();
Перемещение $entity = new $EntityName();
до foreach