REST API将公司链接到另一家公司FOSRestBundle

时间:2013-04-10 20:19:10

标签: php rest symfony doctrine-orm fosrestbundle

在我正在开发公司的REST API中,父公司的父属性也属于公司类。

这样我可以创建三个公司。公司有一个母公司(公司类),可以多个子公司(收藏)

/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="child")
* @Expose()
*/
protected $parent;

/**
* @ORM\OneToMany(targetEntity="Company", mappedBy="parent")
*/
protected $child;

public function __construct()
{
    ...
    $this->child = new \Doctrine\Common\Collections\ArrayCollection();
}

我如何去做和消除父母和子女公司之间的关系?

我已经阅读了 LINK 动词,但我担心所有网络服务器都不支持它。

我应该与PUT建立关系吗? 然后,我将如何删除与父项的关系(将其设置为NULL)。

我的CompanyController看起来像这样:

/**
    * Edit Action
    * 
    * @Rest\View()
    */
   public function editAction(Company $company)
   {
       return $this->processForm($company);
   }

   /**
    * Remove Action
    * 
    * @Rest\View(statusCode=204)
    */
   public function removeAction(Company $company)
   {
        $em = $this->getDoctrine()->getManager();
        $em->remove($company);
        $em->flush();
   }
   /**
    * ProcessForm Action
    */
   private function processForm(Company $company)
   {

       $statusCode = $this->getRequest()->getMethod() == 'POST' ? Codes::HTTP_CREATED : Codes::HTTP_SEE_OTHER;

       $form = $this->createForm(new CompanyType(), $company);
       $form->bind($this->getRequest());

       if($form->isValid())
       {
           $em = $this->getDoctrine()->getManager();
           $em->persist($company);
           $em->flush();

           return $this->redirectView(
            $this->generateUrl(
                'company_get',
                array('id' => $company->getId())
            ),
            $statusCode
            );

       }

       return View::create($form, 400);
   }

有什么建议吗?

0 个答案:

没有答案