/** * カテゴリを保存する. * * @param \Eccube\Entity\Category $Category カテゴリ * @return boolean 成功した場合 true */ public function save(\Eccube\Entity\Category $Category) { $em = $this->getEntityManager(); $em->getConnection()->beginTransaction(); try { if (!$Category->getId()) { $Parent = $Category->getParent(); if ($Parent) { $rank = $Parent->getRank() - 1; } else { $rank = $this->createQueryBuilder('c')->select('MAX(c.rank)')->getQuery()->getSingleScalarResult(); } if (!$rank) { $rank = 0; } $Category->setRank($rank + 1); $Category->setDelFlg(0); $em->createQueryBuilder()->update('Eccube\\Entity\\Category', 'c')->set('c.rank', 'c.rank + 1')->where('c.rank > :rank')->setParameter('rank', $rank)->getQuery()->execute(); } $em->persist($Category); $em->flush(); $em->getConnection()->commit(); } catch (\Exception $e) { $em->getConnection()->rollback(); return false; } return true; }