public function recursiveTransform($children, $root, $parent) { $em = $this->em; foreach ($children as $child) { $tag = $child['tag']; $classes = $child['cssClass']; $matches = $this->extractClasses($classes); $new = new Layout(); $new->setCssClasses($matches); $new->setTag($tag); $new->setRoot($root); $new->setParent($parent); $em->persist($new); $root->addSub($new); $parent->addChild($new); $em->flush($new); if (isset($child['children'])) { $this->recursiveTransform($child['children'], $root, $new); } } }