Пример #1
0
 private function insertUpdateProcessing(EntityManager $em, $data, $id = null)
 {
     $update = !is_null($id);
     try {
         $em->beginTransaction();
         //Create or retrive entity
         if ($update) {
             $menu = $em->find('Model\\Menu', $id);
         } else {
             $menu = new Menu();
         }
         //If update mode delete all items on db
         if ($update) {
             foreach ($menu->getChildren() as $child) {
                 $em->remove($child);
             }
         }
         $menu->setName($data['menu_name']);
         $menu->setDescription($data['menu_description']);
         if ($update) {
             $em->merge($menu);
         } else {
             $em->persist($menu);
         }
         $em->flush();
         $items = $this->processMenu($data, $menu->getId(), array());
         foreach ($items as $item) {
             $menu->addMenuItem($item);
         }
         $em->merge($menu);
         $em->flush();
         $em->commit();
     } catch (\Exception $e) {
         $em->rollback();
         throw $e;
     }
     return $menu->getId();
 }