/** * 親カテゴリ名を含むカテゴリ名を取得する. * @return string */ public function getCategoryFullName() { if (is_null($this->Category)) { return ""; } $fulName = $this->Category->getName(); // 親カテゴリがない場合はカテゴリ名を返す. if (is_null($this->Category->getParent())) { return $fulName; } // 親カテゴリ名を結合する $ParentCategory = $this->Category->getParent(); while (!is_null($ParentCategory)) { $fulName = $ParentCategory->getName() . " > " . $fulName; $ParentCategory = $ParentCategory->getParent(); } return $fulName; }
/** * カテゴリを保存する. * * @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; }