Eccube\Repository\CategoryRepository::save PHP Method

save() public method

カテゴリを保存する.
public save ( Category $Category ) : boolean
$Category Eccube\Entity\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;
    }